当前位置:   article > 正文

Servlet组件

servlet组件

1、生命周期

        1.1、初始化

        Servlet初始化交由应用服务器管理,在管理中(<load-on-startup>0</load-on-startup>)负责Servlet来控制单例模式。

        默认值为-1,代表懒汉模式。大于-1代表饿汉模式。

        当值大于-1时,直接影响到初始化顺序,数字越小优先级越高   

  1. @Override
  2. public void init(ServletConfig config) throws ServletException{
  3. System.out.print("我是初始化方法");
  4. }

        1.2、运行

        接收请求,返回响应

  1. //HttpServletRequest 请求
  2. //HttpServletResponse 响应
  3. @Override
  4. public void service(HttpServletRequest resquest,HttpServletResponse response) throws SercletException,IOException{
  5. System.out.print("我是运行方法");
  6. }

        1.3、销毁

        destroy():关闭服务器时调用,且只调用一次

  1. @Override
  2. public void destroy(){
  3. System.out.print("我是销毁方法");
  4. }

2、实现方式       

        2.1、基于配置

        web.xml中

  1. <servlet>
  2. <!--名称-->
  3. <servlet-name>Life</servlet-name>
  4. <!--指向的类路径-->
  5. <servlet-class>Servlet.LifeServlet</servlet-class>
  6. <!--初始化参数-->
  7. <init-param>
  8. <!--参数名-->
  9. <param-name>username</param-name>
  10. <!--参数值-->
  11. <param-value>Zhanghr</param-value>
  12. </init-param>
  13. <init-param>
  14. <param-name>password</param-name>
  15. <param-value>123456</param-value>
  16. </init-param>
  17. <!--单例实现模式-->
  18. <load-on-startup>0</load-on-startup>
  19. </servlet>
  20. <servlet-mapping>
  21. <!--名称对应的映射-->
  22. <servlet-name>Life</servlet-name>
  23. <!--访问路径-->
  24. <url-pattern>/life.do</url-pattern>
  25. </servlet-mapping>

        注:在url-pattern中一定要写“/”,否则路径失效。  

        2.2、基于注解      

  1. @WebServlet(
  2. name="LifeServlet",
  3. urlPatterns="/life.do",
  4. loadOnStartup=0,
  5. initParams={
  6. @WebInitParam(name="username",value="zhanghr"),
  7. @WebInitParam(name="password",value="123456")
  8. }
  9. )
  10. public class LifeServlet extends HttpServlet{
  11. }

3、HTTP协议

        HTTP(超文本传输协议)是无连接无状态的,客户端发送一次请求,服务器返回一次响应,返回响应后服务器立即关闭连接通道。

        服务器端不会存储任何客户端相关的信息。每次客户端请求都被服务器认为是全新的。

4、Request请求

        4.1、请求行[固定项]

                HTTP协议:http 1.1—http://                    http2.0—https://

                请求方法:get || post

                请求地址:URL+URI

                由固定项组成,可以通过request的get方法获取地址栏中的信息。

        4.2、请求头

                由浏览器采集非用户隐私信息传送到服务端

                通过request的getHeader(键)获取对应值。

        4.3、数据体

                客户端表单中的数据。

        4.4常用方法

  1. //获取客户端
  2. String userAgent = request.getHeader("User-Agent");
  3. System.out.println("userAgent:"+userAgent);
  4. //获取项目路径
  5. String contextPath = request.getContextPath();
  6. System.out.println("项目路径"+contextPath);//
  7. //获取uri
  8. String uri = request.getRequestURI();
  9. System.out.println("uri:"+uri);
  10. //获取url(ip://port/project/index)
  11. StringBuffer url = request.getRequestURL();
  12. System.out.println("url:"+url);
  13. //请求方式(get/post)
  14. String method = request.getMethod();
  15. System.out.println("method:"+method);
  16. //获取协议信息(1.1/2.0)
  17. String protocol = request.getProtocol();
  18. System.out.println( "protocol:"+protocol );
  19. //获取方式(http/https)
  20. String scheme =request.getScheme();
  21. System.out.println("Scheme:"+scheme);

5、Response响应

        5.1、状态行(响应行)

        http协议:http1.1—http://                http2.0—https://

        状态码http://cat

                1xx:信息响应类,表示接收到请求并继续处理(服务器端continue)

                2xx:处理成功响应类,表示动作被成功接收理解和接收

                3xx:重定向响应类,为了完成指定动作,必须接受进一步处理(服务器+客户端)

                4xx:客户端错误,客户请求包含语法错误或是不能正确执行

                5xx:服务端错误,服务器不能正常执行一个正确的请求

        消息值:每个状态码都有对应的消息值

                404 Not Found                         405 Method Not Allowed

        5.2、响应头

                服务器传递信息到客户端,常用方法有两种

                Response.addHeader("key1","value1"),确定不存在用添加

                Response.addHeader("key2","value2"),存在覆盖,不存在添加

        5.3、响应内容

                设置响应类型:response.setContentType("text/html;charset=UTF-8");

                reaponse响应类型分两种:

                1、响应文本

                        response.getWriter();

                2、响应流

                        response.getOutputStream();                       

  1. //如果未设置了浏览器处理文件方式,能识别就打开,不能识别就下载。
  2. response.addHeader("Content-Disposition","attachment;filename=\文件名\");
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/977401
推荐阅读
相关标签
  

闽ICP备14008679号