美文网首页
Servlet会话管理

Servlet会话管理

作者: Vsion8980 | 来源:发表于2018-10-12 12:01 被阅读0次

    模拟会话

    首先通过一个例子模拟一下会话,此时有一个问答网页,分为两页作答,然后提交给服务器。

    在目前所学的知识中,你能采取的方法只有:

    1. 将第一页的数据上传到服务器,然后再将第二页的数据上传给服务器。
    2. 将第一页要发送到服务器的数据转发至第二页,然后和第二页数据一并上传至服务器。

    1.方法要两次与服务器沟通,且服务器是无法判断第一次的数据与第二次的联系。所以只能使用方法2.

    方法2.的执行:

    1.第一页的数据使用submit提交至第二页
    1.第二页请求获取变量,使用类型为hiddeninput标签跟第二页数据存储在一块
    1.一并提交给服务器

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    @WebServlet(name = "Servlet",urlPatterns = "/questionServlet")
    public class questionServlet extends HttpServlet {
        protected void res(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            String page = request.getParameter("page"); //使用page变量区分页数
            PrintWriter out = response.getWriter();
            out.println("<html><body>");
            out.println("<form action='questionServlet' method='post'>");
            
    
            //第一页
            if(page==null){
    
                out.println("一:<input type='text' name='p1q1'>");
                out.println("<input type='submit' name='page' value='下一页'>");
    
    
            }
            //第二页
            else if (page.equals("下一页")){
                String p1q1 = request.getParameter("p1q1");
                out.println("二:<input type='text' name='p2q1'>");
                out.println("<input type='hidden' value='"+p1q1+"'name='p1q1'>");//使用hidden类型input标签保存数据
                out.println("<input type='submit' name='page' value='提交'>");//一并提交
            }
    
            else if (page.equals("提交")){
                out.println(request.getParameter("p1q1")+"<br>"+request.getParameter("p2q1"));
            }
        }
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            res(request,response);
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    }
    

    结果截图:


    第一页界面
    模拟上传服务器

    思考:
    即便是使用hidden,只要是前端语言,总会在浏览器中留下痕迹,例如,在源代码中查看到数据:

    第二页HTML源代码

    所以此方法存在安全隐患,但可以用于一些对隐私要求不高的场景中

    相关文章

      网友评论

          本文标题:Servlet会话管理

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