您的位置:首页 > 理论基础 > 计算机网络

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

2016-08-15 00:46 218 查看
  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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐