学习笔记(二)HttpServlet、ServletContext、ServletConfig

学习笔记(二)HttpServlet、ServletContext、ServletConfig

概述
虽然可以通过手工方式书写socket通信,仿写HTTP请求、响应协议的格式,回传给客户端,但如果请求的业务比较复杂,多个请求同时到达,
会给服务端的解析造成重大的负担,特别是文件上传等耗时操作不利于系统的使用效率,也给开发人员造成很大的工作量,基于此,servlet
及相关的ServletContext组件封装了客户端的请求和响应的协议格式信息,使开发人员从繁重的协议格式“接头”及相关的请求、响应解析工作中解放出来,只需要关注与协议无关的业务的处理。

  1. HttpServlet的父类的父类是Servlet,包含初始化init()、service()、destroy() 3个生命周期的方法,并且是单例模式运行,并且这些方法是基于回调的;

  2. HttpServletRequest的作用:
    request对象的的创建以及销毁都是由tomcat来完成的,它代表了请求对象的抽象,我们可以在这个对象中获得在请求协议中所
    有的相关数据。

3.HttpServletResponse的作用:
response对象的的创建以及销毁都是由tomcat来完成的,它代表了响应对象的抽象,我们可以在这个对象中获得在响应协议中所
有的相关数据。

4.httpServlet由容器即应用服务器(TOMCAT\JBOSS等)创建,init()方法、destroy()只调用一次,多次调用请求时,实质是多次调用service()方法,至于doGet\doPost\doHead等方法 ,其实是可以通过service的request的方法名称分派出去,代码如下:

 if(request.getMethod().equalsIgnoreCase("GET")){
        doGet(request,response);
 }else if(request.getMethod().equalsIgnoreCase("POST")){
        doPost(request,response);
}

5.编写HttpServlet的步骤:
A.继承基类HttpServlet,根据需要覆盖(override) 这5个方法中的 init()、service()、destroy()、doGet()、doPost();
service等方法的request参数 getParameter(参数名)获取客户端提交的参数值,setAttribute(参数名,参数值)设置相关的参数值;

B.在web.xml 文件中配置该servlet的映射:


SendMsgServlet

package名.SendMsgServlet


keyword
fuck,shit,cao


0

 <!-- 2.配置Servlet的映射 浏览器中访问某个资源的时候怎么知道这个资源是哪个java类,如果不需要浏览器请求,则不用配置 -->
 <servlet-mapping>
<!-- 指定位哪个servlet配置映射 -->
<servlet-name>SendMsgServlet</servlet-name>
<url-pattern>/chatroom/send</url-pattern>
 </servlet-mapping>

C.编写页面,JSP\HTML;

7.get请求与POST请求的区别
A.GET参数传输的数据长度有限制,请求后的页面可以存入收藏夹参数会附加在URL后面传输数据和安全相关的不会采用GET;
B.POST参数传输长度理论上无限制,请求后的页面无法存入收藏夹参数不会附加在URL后面传输数据和和安全相关的会采用POST;

8.ServletContext【Servlet之间数据共享】:
Servlet上下文对象,是所有servlet共享的一片内存空间,我们可以把数据存储在片内存空间中,实现在多个servlet当中共享数
据。通过当前子类httpServlet类的this.getServletContext()获取ServletContext的实例,然后该实例的getAttribute(参数名)
获取对应的参数值列表,.setAttribute(“msgs”, msgs)设置参数值列表;

9.servlet默认情况下是在服务器启动之后,第一次从WEB上访问后才会执行init方法初始化。在web.xml配置servlet的时候,我
们可以通过加0这样的标签,让TOMCAT启动就加载对应的servlet,并且执行init方法。

10.每一个Servlet都对应在web.xml中有一段配置,ServletConfig对象正是读取这段专属servlet的配置文件信息。可以通过配置一些外部参数更加灵活的让servlet工作。参照3中的开发步骤中的”init-param”节点配置;

猜你喜欢

转载自blog.csdn.net/hello_delphi/article/details/78556628