码迷,mamicode.com
首页 > 编程语言 > 详细

JavaWeb09-HTML篇笔记(二)

时间:2018-05-21 16:09:02      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:java

1.1 案例一:使用Servlet完成一个用户登录的案例.1.1.1 需求:
在网站的首页上,登录的链接,点击登录的链接,可以跳转到登录的页面.在登录的页面中输入用户名和密码点击登录的案例.完成登录的功能.
技术分享图片
1.1.2 分析:1.1.2.1 技术分析:
【HTTP的协议的概述】

? 协议:
* 什么是协议:规定双方需要遵守的规则.
? HTTP协议:
* 什么是HTTP协议:用来规定浏览器与服务器之前需要遵守的规则.
 ![](http://i2.51cto.com/images/blog/201805/21/4e240f07b0bd6b1c9545ff695376ff85.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

? HTTP协议的作用:规范浏览器和服务器之间的数据传递.
? HTTP协议的特点:
* 基于请求和响应的模型.
    * 必须先有请求后有响应.
    * 请求和响应必须成对出现.
* 默认的端口号是80.
? HTTP协议的版本:
* 1.0   :每次响应后即刻关闭了连接.
* 1.1   :现在使用.不是每次响应后挂断,等待长时间以后没有请求会挂断.

【HTTP协议的演示】

抓包分析:GET方式:
* 请求部分:

GET /day09/demo1-http/demo2.html?name=aaa&age=23 HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
X-HttpWatch-RID: 59176-10011
Referer: http://localhost:8080/day09/demo1-http/demo1.html
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: localhost:8080
DNT: 1
Connection: Keep-Alive

抓包分析:POST方式:
POST /day09/demo1-http/demo2.html HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
X-HttpWatch-RID: 59176-10031
Referer: http://localhost:8080/day09/demo1-http/demo1.html
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 15
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache

name=bbb&age=38

* 响应部分:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"145-1461807615933"
Last-Modified: Thu, 28 Apr 2016 01:40:15 GMT
Content-Type: text/html
Content-Length: 145
Date: Thu, 28 Apr 2016 01:43:52 GMT

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Demo2.html</h1>
</body>
</html>

【HTTP协议的详解】

? 请求部分
* 请求行
    * 提交方式:
        * 提交方式有很多,常用的GET和POST:
        * GET和POST的区别:
            * GET的提交的参数会显示到地址栏上,而POST不显示.
            * GET往往是有大小限制的,而POST没有大小的限制.
            * GET没有请求体,而POST有请求体.
    * 提交路径:
    * 协议版本:
* 请求头
    * 都是键值对的形式显示的.一般一个key对应一个value,也有个别的是一个key对应多个value.
    * User-Agent    :代表浏览器的类型. --- 文件下载:下载中文文件:IE使用URLEncodor进行编码,而Firefox使用Base64编码.
    * Referer   :代表的是网页的来源. --- 防盗链.
    * If-Modified-Since :通常与响应中的头Last-Modified一起使用查找本地缓存.
* 请求体
    * 就是POST提交方式的提交的参数.
? 响应部分
* 响应行:
    * 协议版本
    * 状态码   :
        * 200   :成功
        * 302   :重定向
        * 304   :查找本地缓存
        * 404   :资源不存在
        * 500   :服务器内部错误
    * 状态码描述
* 响应头:键值对,一般一个key对应一个value,也有一个key对应多个value.
    * Last-Modified :与请求中的If-Modified-Since一起使用查找本地缓存.
    * Content-Dispostion    :文件下载的使用使用的一个头信息.
    * Location  :重定向的跳转的路径.
    * Refresh   :定时刷新/定时跳转.
* 响应体:显示浏览器的页面的内容.
【Servlet的概述】

? 什么是Servlet:
* 就是一个运行在WEB服务器上的小的Java程序,用来接收和响应从客户端发送过来的请求,通常使用HTTP协议.
* Servlet就是SUN公司提供的一个动态网页开发技术.
? Servlet的作用:
* 用来处理从客户端浏览器发送的请求,并且可以对请求作出响应
? 使用Servlet:
* 编写一个类实现Servlet接口.
* 将编写的这个类配置到服务器中.
? Servlet的入门:
* 编写类:
public class ServletDemo1 implements Servlet{

@Override
/**
 * 为用户处理请求和响应的方法.
 */
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
res.getWriter().println("Hello Servlet...");
}
...
}
* 配置:
``` test1 com.itheima.a_servlet.ServletDemo1 test1 /ServletDemo1 * 访问: http://localhost:8080/day09/ServletDemo1 【使用ServletRequest接收参数】 ![](http://i2.51cto.com/images/blog/201805/21/be54d20c345f503507a7b200efb6297d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) * String getParameter(String name); ---用于接收一个名称对应一个值的数据. * String[] getParameterValues(String name);---用于接收一个名称对应多个值的数据. * Map getParameterMap(); ---用于接收表单中的所有的数据,Map的key是表单提交的参数名称,Map的value是提交参数的值. * Enumeration getParameterNames() ---用于获取表单中提交的所有的参数的名称. 【Servlet的访问流程】 【Servlet的实现的关系】 Servlet :接口 | GenericServlet :通用的Servlet | HttpServlet :HttpServlet * 编写一个类继承HttpServlet,重写doGet和doPost方法. * 配置 ``` 1.1.3 代码实现1.1.3.1 步骤一:创建数据库和表: ``` create database day09; use day09; create table user( id int primary key auto_increment, username varchar(20), password varchar(20), nickname varchar(20) ); insert into user values (null,‘aaa‘,‘111‘,‘小凤‘); insert into user values (null,‘bbb‘,‘111‘,‘小童童‘); ``` 1.1.3.2 步骤二:创建包和类: 1.1.3.3 步骤三:引入jar包 ``` * mysql的数据库的驱动包 * c3p0连接池的jar包 * dbutils的包 ``` 1.1.3.4 引入login的页面 1.1.3.5 编写Servlet-->Service-->DAO 1.1.4 总结:1.1.4.1 Servlet的生命周期:(*****) ``` ? 生命周期:就是一个对象从创建到销毁的过程. ? Servlet生命周期:Servlet从创建到销毁的过程. * 何时创建:用户第一次访问Servlet创建Servlet的实例 * 何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候. ? 用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行. ``` 1.1.4.2 Servlet的相关的配置: 【启动时创建Servlet】 ``` Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置: 在web.xml中在标签中配置: * 2 --- 传入正整数,整数越小,被创建的优先级就越高. 【url-pattern的配置】 url-pattern配置方式共有三种: 1.完全路径匹配 :以 / 开始 例如: /ServletDemo4 , /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6 2.目录匹配 :以 / 开始 需要以 * 结束. 例如: /* ,/aaa/* ,/aaa/bbb/* 3.扩展名匹配 :不能以 / 开始 以 * 开始的. 例如: *.do , *.action ***** 错误的写法 : /*.do ``` 有如下的配置: ``` ServletDemo4 com.itheima.a_servlet.ServletDemo4 ServletDemo4 /ServletDemo4 ServletDemo5 com.itheima.a_servlet.ServletDemo5 ServletDemo5 /* ServletDemo6 com.itheima.a_servlet.ServletDemo6 ServletDemo6 *.do 如果访问地址: http://localhost:8080/day09/ServletDemo4 :第一个 http://localhost:8080/day09/aaa.do :第二个 ***** 完全路径匹配 > 目录匹配 > 扩展名匹配 ``` 1.1.4.3 开发中的路径的编写: ``` ? 相对路径:都是需要找位置相对关系.不能以 / 开始的. * ./ 当前路径 ../上一级目录 * 使用相对路径访问: * http://localhost:8080/day09/demo4-url/demo1.html * http://localhost:8080/day09/ServletDemo6 ? 绝对路径:不需要找位置相对关系. 以 / 开始的. * 绝对路径中分为客户端路径和服务器端路径: * 客户端路径一定要加工程名. /day09/ServletDemo6 * 服务器端路径不需要加工程名. /ServletDemo6 ```

JavaWeb09-HTML篇笔记(二)

标签:java

原文地址:http://blog.51cto.com/13517854/2118614

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!