Servlet组件

1、生命周期

        1.1、初始化

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

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

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

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

        1.2、运行

        接收请求,返回响应

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

        1.3、销毁

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

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

2、实现方式       

        2.1、基于配置

        web.xml中

    <servlet>
        <!--名称-->
        <servlet-name>Life</servlet-name>
        <!--指向的类路径-->
        <servlet-class>Servlet.LifeServlet</servlet-class>
        <!--初始化参数-->
        <init-param>
            <!--参数名-->
            <param-name>username</param-name>
            <!--参数值-->
            <param-value>Zhanghr</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>123456</param-value>
        </init-param>
        <!--单例实现模式-->
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <!--名称对应的映射-->
        <servlet-name>Life</servlet-name>
        <!--访问路径-->
        <url-pattern>/life.do</url-pattern>
    </servlet-mapping>

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

        2.2、基于注解      

@WebServlet(
    name="LifeServlet",
    urlPatterns="/life.do",
    loadOnStartup=0,
    initParams={
        @WebInitParam(name="username",value="zhanghr"),
        @WebInitParam(name="password",value="123456")
    }
)
public class LifeServlet extends HttpServlet{
}

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常用方法

        //获取客户端
        String userAgent = request.getHeader("User-Agent");
        System.out.println("userAgent:"+userAgent);
        //获取项目路径
        String contextPath = request.getContextPath();
        System.out.println("项目路径"+contextPath);//
        //获取uri
        String uri = request.getRequestURI();
        System.out.println("uri:"+uri);
        //获取url(ip://port/project/index)
        StringBuffer url = request.getRequestURL();
        System.out.println("url:"+url);
        //请求方式(get/post)
        String method = request.getMethod();
        System.out.println("method:"+method);
        //获取协议信息(1.1/2.0)
        String protocol = request.getProtocol();
        System.out.println( "protocol:"+protocol );
        //获取方式(http/https)
        String scheme =request.getScheme();
        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();                       

//如果未设置了浏览器处理文件方式,能识别就打开,不能识别就下载。
response.addHeader("Content-Disposition","attachment;filename=\文件名\");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值