Http协议无状态带来的问题和解决方法

    xiaoxiao2025-06-19  5

      HTTP是无状态协议,也就是没有记忆力,每个请求之间无法共享数据。

    会话跟踪技术:          1.参数传递机制             是在请求路径后面加上请求的参数             localhost/dowork/login?username=xxx             问题:将请求参数暴露在地址栏中,不安全,使用后面的cookie和session解决          2.cookie          3.session

    <form action="/dowork/login" method="post"> <input placeholder="用户名" type="text" name="username" /> <br/> <input placeholder="密码" type="password" name="password" /> <br/> <input type="submit" value="登录" /> </form>  值传递最少要页面三个才能看出效果 如果是两个页面的话直接请求就可获得值:

    在下面我演示的都是简单的动态页面 我教的是理念 而不是代码

    将要演示的代码结构:

    //javaWeb结构很重要 如有不懂 等我有空 在抽时间写张关于javaWeb结构的文章 @WebServlet("/login") public class LoginServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置请求格式 req.setCharacterEncoding("utf-8"); //设置响应格式 resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); //获取请求时的用户名和密码 String username = req.getParameter("username"); String password = req.getParameter("password"); //验证用户名和密码 if("admin".equals(username)&&"1234".equals(password)){ //进入邮箱界面 out.println("<h1>欢迎登录:"+username+"的邮箱</h1>"); out.println("<a href='/dowork/list?username="+username+"'>"+"未读邮件</a>"); }else{ System.out.println("登录失败"); } out.close(); } }

    @WebServlet("/list") public class ListServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置请求的格式 req.setCharacterEncoding("utf-8"); //设置响应格式 resp.setContentType("text/html;charset=utf-8"); String username = req.getParameter("username"); PrintWriter out = resp.getWriter(); out.println("欢迎查看:"+username+"邮件"); out.println("<a href = '/dowork/content?username="+username+"'>邮件1</a>"); out.println("<a href = '/dowork/content?username="+username+"'>邮件2</a>"); out.println("<a href = '/dowork/content?username="+username+"'>邮件3</a>"); out.close(); } } @WebServlet("/content") public class ContentServlet extends HttpServlet{ private static final long serialVersionUID = 1L; protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String username = req.getParameter("username"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); out.print("最后一页啦:"+username+"大大"); out.print("<br/>宝宝炸了"); out.close(); } } 解决方法就放在下一张博客吧 请期待Cookie和Session

    转载请注明原文地址: https://ju.6miu.com/read-1300119.html
    最新回复(0)