美文网首页
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学习笔记

    title: servlet学习笔记date: 2019-11-07 21:01:05tags: servlet学...

  • 文章目录

    Markdown学习 Markdown学习 Java学习 Servlet学习笔记 Java问题 Tomcat问题修...

  • Servlet学习笔记,编写第一个servlet

    Servlet学习笔记,编写第一个servlet 用到的软件/工具:JDK1.6以上、maven 3.1.0、to...

  • Servlet学习笔记

    Servlet学习笔记 工作以来就一直在用各种web框架,比如SpringMVC,Spring Cloud这些,向...

  • Servlet学习笔记

    出自https://blog.csdn.net/ls5718/article/details/51620649 S...

  • Servlet学习笔记

    Servlet概述 JSP的前身就是Servlet。因此我们乐意清楚的知道Servlet是JSP的基础。Servl...

  • servlet学习笔记

    什么是servlet servlet是服务器上运行的小程序,一个servlet就是一个java类,通过“请求-响应...

  • Servlet学习笔记

    Servlet简介 Servlet是什么 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,...

  • Servlet学习笔记

    Servlet 学习笔记 一、动态网页技术发展 静态网页技术HTML: 无法进行用户交互 动态网页技术CGI: 效...

  • Servlet学习笔记

    1.servlet模板配置 http://www.cnblogs.com/xdp-gacl/p/3769058.h...

网友评论

      本文标题:Servlet学习笔记

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