servlet小结1

这次一下子上了3天课,知识和代码量都有些多,暂时先将老师的笔记写上,之后进行修改吧

一、HTTP协议请求消息头

Accept:浏览器可接受的MIME类型 
(MIME类型与文件系统中的文件类型的对应关系可以查看CATALINA_HOME/conf/web.xml)
Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip 
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 可以在浏览器中进行设置。
Host:初始URL中的主机和端口 
Referer:取值为,用户所访问的当前页面之前的那个页面的URL(防盗链)
Content-Type:客户端向服务器端提交的数据的MIME类型
Content-Length:表示请求消息正文的长度 
二、HTTP协议响应消息头
Location:指示新的资源的位置
Server:apache tomcat指示服务器的类型
Content-Encoding: gzip服务器发送的数据采用的编码类型
Content-Length: 80 告诉浏览器正文的长度
Content-Language: zh-cn服务发送的文本的语言
Content-Type: text/html; charset=GB2312(正文所使用的编码)服务器发送的内容的MIME类型
Refresh: 1;url=http://www.it315.org指示客户端刷新频率。单位是秒
Content-Disposition: attachment; filename=aaa.zip指示客户端下载文件
Set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie

Expires: -1 控制客户端不要缓存
Cache-Control: no-cache (1.1) 控制客户端不要缓存 

Pragma: no-cache   (1.0)控制客户端不要缓存

三、Servlet的编写过程
1、 编写一个类(classes目录下)实现javax.servlet.Servlet接口
2、编译自定义的Servlet类。进入classes目录,执行
javac -d . HelloServlet.java
由于Servlet相关的类不在jdk中,因此应先设置classpath
set classpath=%classpath%;C:\apache-tomcat-6.0.32\lib\servlet-api.jar
3、配置Servlet,修改web.xml文件,增加以下内容
<servlet>
        <servlet-name>HelloServlet</servlet-name><!--Servlet的名称-->
        <servlet-class>com.itheima.HelloServlet</servlet-class><!--Servlet对应的类-->
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/HelloServlet</url-pattern><!--访问该Servlet的URL路径-->
    </servlet-mapping>
4、将应用部署到Tomcat中
5、访问http://localhost:8080/hello/HelloServlet就是执行该Servlet
四、Servlet规范
1、含有两个类包
javax.servlet:协议无关的Servlet相关类
javax.servlet.http:与HTTP协议有关的Servlet相关类
2、当编写Servlet选择通过继承HttpServlet的方式时,不要覆盖掉service方法
原因:HttpServlet覆盖了service方法,提供了一些针对不同请求方式的处理方法


正确做法:覆盖掉do**方法
五、Servlet的映射
可以使用通配符*
使用通配符有两种固定的写法:
1、*.扩展名(前面没有/)
2、以"/"开头,以"/*"结尾


3、如果一个Servlet的映射url路径为"/",那么该Servlet称之为缺省Servlet
4、所有的请求都是交给Servlet去处理的。如果用户请求的资源的URL路径在当前web应用的web.xml中没有找到匹配时,都是交由默认Servlet去处理的(CATALINA_HOME/conf/web.xml中有定义)
六、Servlet的生命周期
1、Servlet在默认情况下,在第一次被访问到时,才会由容器创建他的实例
2、针对用户的每次访问,service都会被调用一次
3、Servlet对象被销毁时,才会执行Destory方法
4、如果想Servlet在Tomcat启动时就被实例化,怎么做?
<servlet>
    <servlet-name>ServletDemo4</servlet-name>
    <servlet-class>com.itheima.servlet.ServletDemo4</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
load-on-startup:主体内容为一个自然整数


七、Servlet的Service方法是多线程来调用的,会有线程安全(访问共同资源时)问题
1、使用同步
2、使用对象池。即在Tomcat中创建多个Servlet对象来进行服务
实现SingleThreadModel接口
3、尽量把变量定义成局部变量(*)
八、ServletConfig对象:代表Servlet的参数配置,设置初始化参数,可以使用ServletConfig来查看config.getInitParameter("name");或config.getInitParameterNames;
<init-param>
    <param-name>name</param-name>
    <param-value>jack</param-value>
</init-param>
九、ServletContext:
作用:代表整个JavaWeb应用,可以理解为当前web应用的总管
随着应用的启动而创建,随着应用的停止而销毁
1、实现Servlet之间的数据共享
ServletContext也是一个域对象(Map容器)
setAttribute(String name,Object obj):向容器中绑定对象
getAttribute(String name):从容器中获取某个对象
removeAttribute(String name):从容器中删除某个对象
getAttributeNames():获取容器中的所有名称
2、配置全局参数web.xml
<context-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
ServletContext.getInitParameter(String name):获取参数取值
十、读取配置文件
1、利用ResourceBundle读取properties配置文件。只能读取classes目录下的
2、ServletContext读取任意位置的资源。getRealPath("/")/代表当前web应用
3、利用类加载器加载配置文件。只能读取classes目录下的(不适合加载特别大的配置文件)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值