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

  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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值