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