美文网首页
Servlet学习笔记

Servlet学习笔记

作者: 陈洲 | 来源:发表于2017-02-22 15:02 被阅读0次
    /*
        servlet使用:
        1.编写java类,继承HttpServlet方法
        2.重写方法
        3.把编译好的class文件放置WEB-INF/classes
        4.配置web.xml
            <servlet>
                <servlet-name>hello</servlet-name>
                <servlet-class>helloServelet</servlet-class>
            </servlet>
            <servlet-mapping>
                <servlet-name>hello</servlet-name>
                <url-pattern>/HELLO</url-pattern>  <!-- 访问网页用的后缀 -->
            </servlet-mapping>
        5.访问网页
            http://www.baidu.com/HELLO  
    */
    
    
    /*
        servlet的生命周期:
        1.客户端访问http://www.baidu.com/HELLO
        2.截取/HELLO去web.xml中找对应servlet的class
        3.通过构造方法构造对应的servlet对象
        4.创建servletConfig对象
        5.调用 public void init(ServletConfig config)
        6.调用 public void service(ServletRequest req,ServletResponse res),service中会调用doGet,doPost等
        7.调用 public void destroy()
    */
    
    
    // servletConfig************************************************************************************************
        
        //servlet的servletConfig对象,servlet对象自带一个servletConfig对象,由init的时候赋值
            private ServletConfig config;
            public void init(ServletConfig config) throws ServletException {
                this.config = config;
            }
        //获取servletConfig对象
            servletConfig config = this.getServletConfig();
    
        //每个servlet对象都会有一个servletConfig对象,存在web.xml中
            <servlet>
                <servlet-name>hello</servlet-name>
                <servlet-class>helloServelet</servlet-class>
                 //这里的参数都是系统在创建servletConfig对象时自动添加的
                 <init-param>
                    <param-name>path</param-name>
                    <param-value>e:/b.txt</param-value>
                </init-param>
            </servlet>
    
        //servletConfig的API
            String str = config.getInitParameter("path");
            Enumeration e = getInitParameterNames(); //e是一个迭代器,可以遍历
            ServletContext context = getServletContext();
            String name = config.getServletName(); //获取servlet的名字
    
    
    //servletContext ************************************************************************************************
    
        /*
            servletContext和servletConfig的区别
            1.config 一个servlet一个,不同servlet不同
            2.context 一个web应用一个, 所有servlet相同
        */
    
        //servletContext文件在哪里
        <web-app>       
            <context-param>   
                <param-name>aaa</param-name>   
                <param-value>123</param-value>   
            </context-param>   
        <web-app>
    
        //得到servletContext
            ServletContext context = config.getServletContext(); 
            this.getServletContext() //直接得到
    
        //得到当前web路径
            String path = context.getContextPath();
            
        //得到web应用的初始化参数
            String p = context.getInitParameter("aaa")
            Enumeration e = context.getInitParameterNames();  
    
        //作为域对象
            context.setAttribute("User",new Object());
            Obeject user = context.getAttribute("User");
            context.removeAttribute("User");
    
        //转发
            RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/hello");  
            dispatcher.forward(request,response);
    
        //得到完整路径
            String path = context.getRealPath(); // D:\tomcat\webapps\hello\
    
    
    //requst和response ************************************************************************************************
        
        //requst
            //请求行
                String m = request.getMethod();
                String u = request.getRequestURI/getRequestURL()
                String p = request.getProtocol();
            //请求头
                String n = request.getHeader("host");
                Enumeration e = request.getHeaderNames(); 
    
            //获取表单参数
                String account = request.getParameter("Account");
                Enumeration e = request.getParameterNames();
                String[] v = request.getParameterValues("Hobit");
    
            //地址
                String request.getContextPath();
            //转发
                RequestDispatcher dispatcher = request.getRequestDispatcher("/hello");  
                dispatcher.forward(request,response);
            //域对象
                同context
        
        //respose
            //响应行
                response.setStatus(404);
            //响应头
                response.setHeader("name","cz");
            //响应体写入
                PrintWriter writer = (PrintWriter) response.getWriter() //字符流
                OutputStream writer =(OutputStream)response.getOutputStream() //字节流
                writer.write(str);
    
    
    //会话 ************************************************************************************************
        
        //cookie,存于浏览器中,大小限制,个数限制,非中文字符串
            //创建cookie
                Cookie cookie = new Cookie("name","value");
            //设置cookie路径,默认web应用根目录下,设置路径的目的是为了多个应用共享cookie
                cookie.setPath("/") //那么在这个服务器上的所有web应用都能用传回来的cookie了
            //设置cookie有效时间
                cookie.setMaxAge(20) //20sec,-1表示存在内存中,0表示删除cookie
            //设置cookie的值
                cookie.setValue("passw");
            //封装cookie
                response.setHearder("set-cookie","name=cz,mail=951368548@qq.com");//方法一
                response.addCookie(cookie); //方法二
            //得到cookie对象
                Cookies[] cookies = request.getCookies();
                String cookie = request.getHeader("cookie");
            //cookie对象方法
                String name = cookie.getName();
                String value = cookie.getValue();
    
    
        //session,存于服务器内存中
            
            /*
                session 原理:核心代码 HttpSession session = request.getSession();
                1.如果一个浏览器第一次访问服务器,服务器就第一次为该次会话执行该代码
                    服务器会做如下动作:
                    Cookie cookie = new Cookie("JSESSIONID",sessionID);
                    response.addCookie(cookie);
                    就为该次会话绑定了一个JSESSIONID,只要浏览器能正确request该ID,就能访问
                    该session域中的对象;
                2.如果不是第一次访问服务器,该代码就会根据request中的JSESSIONIN映射到相应的
                  HttpSession对象,就能操作该域中的对象了
            */
    
            //创建或者获取session对象
            HttpSession session = request.getSession();
            HttpSession session = request.getSession(false); //如果没有session对象就不创建      
            //设置时间和销毁session对象
            session.setMaxInactiveInterval(20); //20s,系统默认30分分钟,可以在web.xml中设置
            session.invalidate();
            //得到session编号
            String session.getId(); //非JSESSIONID,是sessionId
            //保存数据
            session.setAttribute("name", new Object());
            //获取数据
            Object user = session.getAttribute("name");
            //清楚数据
            session.removeAttribute("name");
    

    相关文章

      网友评论

          本文标题:Servlet学习笔记

          本文链接:https://www.haomeiwen.com/subject/tnkmwttx.html