Servlet

作者: liangxifeng833 | 来源:发表于2017-02-09 17:58 被阅读8次

    一,说明

    Paste_Image.png Paste_Image.png

    二.Servlet执行流程

    Paste_Image.png

    三.Servlet生命周期

    Paste_Image.png
    Paste_Image.png

    四.Tomcat装载Servlet的三种情况

    Servlet实例一旦被创建之后,该Servlet对象就会长期保存在内存中.

    • 1.修改web.xml文件中<Servlet></Servlet>之间添加如下代码,loadon中数字越小标识装载顺序优先级就越高;
    <load-on-startup>1</load-on-startup>
    
    • 2.Servlet容器启动后,客户首次向Servlet发送请求
    • 3.Servlet文件被修改后,Tomcat会自动将其装载(也就是自动将.java文件重新编译为.class字节码文件)

    五.Servlet与JSP九大内置对象的关系

    Paste_Image.png

    六.servlet获取表单数据以及相对路径和绝对路径

    @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // TODO Auto-generated method stub
            //实例化实体user类
            Users user=new Users();
            System.out.println("post提交成功");
            
            try{
                //声明表单传递过来的参数
                String uname,pass;
                Date birthday = null;
                String[] favorites;
                boolean flat; 
                
                //将request数据转码
                req.setCharacterEncoding("utf-8");
                uname = req.getParameter("uname") !=null ? req.getParameter("uname") :"" ;
                pass = req.getParameter("pass") !=null ? req.getParameter("pass")  : "" ;
                SimpleDateFormat  sdf = new SimpleDateFormat("yyyy-MM-dd");
                //将接收到生日的字符串类型日期转换为日期类型
                String birth = req.getParameter("birthday") != null ? req.getParameter("birthday") : "";
                birthday = sdf.parse(birth);
                //爱好
                favorites = req.getParameterValues("favorites") != null ? req.getParameterValues("favorites") : null;
                
                //将从表单接收过来的值赋值给user实体对象属性
                user.setUname(uname);
                user.setPass(pass);
                user.setBirthday(birthday);
                user.setFavorites(favorites);
                
                //将赋值后的实体对象注册到session中
                req.getSession().setAttribute("myUser", user);
                if(req.getParameterValues("isAccept") != null)
                {
                    user.setFlat(true);
                }else
                {
                    user.setFlat(false);
                }
                
                /*
                 * 重定向路径
                 */
    //          resp.sendRedirect("/userInfo.jsp");
            //  resp.sendRedirect(req.getContextPath()+"/userInfo.jsp");
                
                /*
                 * 服务器内部转发下三种跳转路径方式效果相同
                 */
                System.out.println(req.getContextPath()); //输出/firstServlet
                /*----------------1. 绝对路径------------------------------*/
                //req.getRequestDispatcher("/userInfo.jsp").forward(req, resp);
                /*----------------2. 相对路径------------------------------*/
                req.getRequestDispatcher("../userInfo.jsp").forward(req, resp);
                /*----------------3. 获得上下文对象---------------------*/
                req.getRequestDispatcher(req.getContextPath()+"/userInfo.jsp").forward(req, resp);
            }catch(Exception ex){
                ex.printStackTrace();   
            }
        }
    

    以上跳转到userInfo.jsp页面获取用户信息

    <h1>>查询用户信息</h1>
    <jsp:useBean id="myUser" class="lxf.entity.Users"  scope="session"></jsp:useBean>
    <p>用户名:<jsp:getProperty name="myUser" property="uname" /></p>
    <p>密码:<jsp:getProperty name="myUser" property="pass" /></p>
    <p>生日:
    <% 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
       String birth = sdf.format(myUser.getBirthday());
        out.print(birth);
    %>
    </p>
    <p>爱好:
    <%
        String[] favs = myUser.getFavorites();
        if(favs != null)
        {
            for(String fav:favs)
            {
                out.print(fav+"  ");
            }   
        }
    
    %>
    </p>
    <p>是否接受条款:<jsp:getProperty name="myUser" property="flat" /></p>
    

    七 servlet接收web.xml中的初始化参数

    • web.xml配置
    <servlet>
        <servlet-name>GetInitParamterServlet</servlet-name>
        <servlet-class>lxf.servlet.GetInitParamterServlet</servlet-class>
        <init-param>
            <param-name>username</param-name>
            <param-value>admin</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>123456</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>GetInitParamterServlet</servlet-name>
        <url-pattern>/servlet/GetInitParamterServlet</url-pattern>
    </servlet-mapping>
    
    • 通过GetInitParamterServlet.java中的init方法接收web.xml中的初始化参数:
        //通过init初始化函数接收web.xml中的初始化参数
        public void init(){
            this.setUsername(this.getInitParameter("username"));
            this.setPassword(this.getInitParameter("password"));
        }
    

    八. MVC

    Paste_Image.png Paste_Image.png
    Paste_Image.png

    九.详细代码请查看

    https://github.com/liangxifeng833/my_program/tree/master/java/jsp

    参考网站
    理解servlet

    相关文章

      网友评论

          本文标题:Servlet

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