1、 配置端口号: 在conf/server.xml文件中配置端口号
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
2、配置欢迎界面:
需要在我们应用目录下app/WEB-INF目录下配置web.xml文件
配置如下:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee" version="3.1">
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<web-app/>
3、http协议请求和响应
http完整请求包括:请求行(请求方式+资源地址+协议版本),请求头,请求正文。
Post请求消息:
POST /app/a.html HTTP/1.1 请求行(请求方式 资源地址 协议版本)
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, 请求头(头名称,头值)
application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap,
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
name=abc&age=100 (请求正文)
响应消息:响应行(响应协议+ 状态码+状态信息),响应头,响应正文。
例如;
HTTP/1.1 200 OK 响应行(响应协议 状态码 状态信息)
Server: Apache-Coyote/1.1 响应头 (头名称,头值)
Accept-Ranges: bytes
Content-Length: 13
Date: Wed, 19 N
hello world!! 响应正文
4、状态码:
200(正常) 表示一切正常,返回的是正常请求结果
302/307(临时重定向) 指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。
304(未修改) 表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。
404(找不到) 服务器上不存在客户机所请求的资源。
500(服务器内部错误) 服务器端的程序发生错误
5、 请求头和响应头
请求头信息:
* Accept: 浏览器告诉服务端, 浏览器可接受的MIME类型
MIME类型: 相当于操作系统下的文件类型。
是由大类型和小类型组成: text/html;
对应的关系在conf/web.xml中查询
Accept-Charset: 浏览器告诉服务端, 浏览器支持哪种字符集
Accept-Encoding: 浏览器告诉服务端, 浏览器能够进行解码的数据编码方式,比如gzip
Accept-Language: 浏览器告诉服务端,浏览器支持的语言种类
Host: 浏览器告诉服务端,浏览器所在的主机
* Referer: 浏览器告诉服务端,当前页面从哪里来的。
用处: 1. 用来记录广告的信息 2. 防盗链
Content-Type: 浏览器告诉服务端 ,内容类型 If-Modified-Since: 浏览器告诉服务端修改的时间
Content-Length: 浏览器告诉服务端 请求正文内容长度
Connection: 浏览器告诉服务端,连接的状态
*****Cookie: 浏览器告诉服务端 ,浏览器携带的Cookie
Date: 浏览器告诉服务端,发送请求的时间
响应头信息
* Location : 服务端用来告诉浏览器,请求需要重定向.(必须结合状态吗302使用)
Server : 服务端用来告诉浏览器,服务器的类型
* Content-Encoding: 服务端用来告诉浏览器,服务器对数据采用的编码
Content-Length: 服务端用来告诉浏览器,响应正文的长度
Content-Language: 服务端用来告诉浏览器,zh-cn服务发送的文本的语言
*Content-Type: 服务端用来告诉浏览器,你要用哪个码表来解析二进制数据
* Last-Modified : 服务端用来告诉浏览器,访问资源的最后修改时间
*Refresh:服务端用来告诉浏览器,多长时间刷新一次
*Content-Disposition: 服务端用来告诉浏览器,以下载文件的方式打开文件
* Expires: -1 : 服务端用来告诉浏览器,不要缓存
Cache-Control: no-cache (1.1)
Pragma: no-cache (1.0)
***** Set-Cookie: 服务端用来告诉浏览器,要存储的内容
6、servlet配置
在WEB-INF目录下的web.xml文件中中:
<servlet>
<servlet-name>Manager</servlet-name> //servlet名称
<servlet-class>org.apache.catalina.manager.ManagerServlet</servlet-class> //servlet对应字节码文件
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Manager</servlet-name> //servlet名称
<url-pattern>/text/*</url-pattern> //访问路径匹配
</servlet-mapping>
7. servlet生命周期
默认情况下,servlet对象在第一次请求的时候调用构造函数创建, 创建之后自动调用带参的init方法,然后调用service方法.destroy方法在停止服务器或者停止应用的时候调用。整个过程中,init方法和destroy方法只会调用一次,而service方法会反复调用。
8 servlet url匹配
配置优先级: 精确匹配 >以/开头的匹配>以*开头的匹配
如果配置成/ 那么就是一个缺省的servlet,此Servlet处理所有找不到匹配路径的url
9.request.getParameter("xxx"): 控件名不存在返回null;若文本框没有输入,返回“”空字符串;若是单选或者多选没有输入,返回null;
10. 反射使用时注意参数,invoke的参数是可变的,必须告诉编译是否要拆分。
String[] stringArray = new String[]{"Cafe","Baby"};
arrayInputMethod.invoke(object, new Object[] { stringArray });
参考文件 http://xiaolongfeixiang.iteye.com/blog/1772867
11 servlet 中文乱码
参考文件1 http://blog.csdn.net/longyuhome/article/details/7856270
参考文件2 http://blog.csdn.net/xiazdong/article/details/7217022
12 接口 servletConfig 和ServletContext
servletConfig:当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。
作用:
拿去初始化参数、获得ServletContext对象、获取servlet名称。
ServletContext:每一个web应用对应一个ServletContext。
作用:
1.利用ServletContext实现数据共享;
2.通过servletContext对象获取到整个web应用的配置信息
3.通过servletContext对象实现servlet转发
4.通过servletContext对象读取资源文件
13 cookie
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
1. Cookie属性:
1) name: Cookie的名字
2) value: Cookie的值
3) path : 可选的,Cookie的存储路径 。默认情况下存储的路径是访问的Servlet所在的路径目录。
4) MaxAge: 可选,最大的存活时间。Cookie默认情况下是存放在缓存区中的,设置MaxAge后,可能存在硬盘;
2. 服务端如何发送Cookie给浏览器
HttpServletResponse.addCookie(javax.servlet.http.Cookie)
每个网站最多支持20个Cookie,总共支持最多300个,每个Cookie最大4kb. (Cookie的资源是非常稀少的,Cookie中存储的数据都是非常必要的重要的数据。)
3.服务端如何获得浏览器所携带的Cookie
HttpServletRequest.getCookies().
4. 服务端如何删除Cookie
由于服务端没有提供删除的方法,因此采用创建相同的Cookie,设置存活时间为0的办法,覆盖已经存在的Cookie。
5.如何唯一的确定一个Cookie
域名+ 访问路径 + Cookie的名字
6.浏览器到底带不带Cookie,谁说了算呢?
浏览器到底带不带Cookie是由浏览器说了算。
浏览器通过判断, 你在地址栏中敲入的资源地址. starWith(在硬盘上存储的Cookie里面存储的路径) 为true ,那就带,否则就不带.
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器,创建一个其独享的HttpSession对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。