Servlet第四节总结

1.Servlet 利用超级链接在地址追加参数

//html中的代码
<body>
			<a href='canshu.do?name=李桑&age=20'>点击传参数</a>
</body>
//代码  第一行可以不写
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw=response.getWriter();
		String name=request.getParameter("name");
		String age=request.getParameter("age");
		pw.println("<p>员工的姓名为:"+name+"</p>");
		pw.println("<p>员工的姓名为:"+age+"</p>");
		pw.close();	
	}

2.Servlet 提交参数,可以放在请求转发当中

//第一层 请求转发当中加载参数
RequestDispatcher rd=request.getRequestDispatcher("index?aag=123");
//通过getParameter得到参数 并输出
String aag=request.getParameter("aag");
		pw.println(aag);

2.Servlet 会话管理

http 协议:是无状态协议
会话:客户端和服务器端一系列的请求和响应的活动
Cookie: 客户端会话管理(对象)
Session: 服务器端会话管理(对象)
Cookie 和Session 是一一对应的

例子:
Cookie存储用户对象:不通过登录直接访问
Session存储用户详细信息:登陆后能在各个页面都能看到个人信息
购物车
防止表单重复提交

2.1例子:(关键字:getCookies addCookie)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw=response.getWriter();
		Cookie[]arr=request.getCookies();
		if(arr==null) {
			pw.println("<p>您还没有cookie对象</p>");
			String name="xml";
			Cookie c=new Cookie("hs",name);
			response.addCookie(c);
		}else {
			pw.println("<p>欢迎回来</p>");
			for(Cookie c:arr) {
				c.getName().equals("xml");
				pw.println("<p>您上次浏览的对象是:"+c.getValue()+"</p>");
			}
		}
		pw.close();
	}

2.2 页面过期时间

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw=response.getWriter();
		Cookie[]arr=request.getCookies();
		if(arr==null) {
			pw.println("<p>您还没有cookie对象</p>");
			String name="xml";
			Cookie c=new Cookie("hs",name);
			//页面过期时间 默认为0 为关上界面Cookie立刻就没有了
			c.setMaxAge(1000);
			response.addCookie(c);
			
		}else {
			pw.println("<p>欢迎回来</p>");
			for(Cookie c:arr) {
				c.getName().equals("xml");
				pw.println("<p>您上次浏览的对象是:"+c.getValue()+"</p>");
			}
		}
		pw.close();
	}

2.3 例子 Session(关键字:getSession setAttribute)

//html代码
<body>
		<form action="first.view"  method="post">
		<input type="text" name="uid" /><br>
		<input type="password" name="pwd" /><br>
		<input type="submit" value="提交"/><br>
		</form>>
</body>
//第一页代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw=response.getWriter();
		String name=request.getParameter("uid");
		String pwd=request.getParameter("pwd");
		if(name.equalsIgnoreCase("aaa")&&pwd.equalsIgnoreCase("123")) {
			HttpSession hs=request.getSession();
			hs.setAttribute("uid", "uid");
			RequestDispatcher rd=request.getRequestDispatcher("second.view");
			rd.forward(request, response);		
		}else {
			request.setCharacterEncoding("index.html");
		}	
	}
//第二页代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw=response.getWriter();
		HttpSession hs=request.getSession();
		String a=(String) hs.getAttribute("uid");
		pw.println(a);
		pw.println("<a href='next.view'>点击进如下一页</a>");
		
	}
//第三页代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw=response.getWriter();
		HttpSession hs=request.getSession();
		String a=(String) hs.getAttribute("uid");
		pw.println(a);
	}
		//立即失效
		hs.invalidate();
		//过期时间
		hs.setMaxInactiveInterval(1000);

2.4 表单重复提交(多次提交 session中会有时间 所以触发条件 )

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw=response.getWriter();
		//获取时间节点
		Date d=new Date();
		Long a=d.getTime();
		//保存在session中
		HttpSession hs=request.getSession();
		hs.setAttribute("uid", a);
		pw.println("<form action='sub.do' method='post'>");
		pw.println("<input type=\"text\" name=\"uid\" /><br>");
		pw.println("<input type=\"password\" name=\"pwd\" /><br>");
		pw.println("<input type=\"submit\" value=\"提交\"/><br>");
		pw.println("</form>");
	}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try {
		//用来模仿延迟
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw=response.getWriter();
		HttpSession hs=request.getSession();
		Long a=(Long) hs.getAttribute("uid");
		if(a!=null) {
		//清除session 中的数据
			hs.removeAttribute("uid");
			pw.println("提交成功");
		}else {
			pw.println("请不要重复提交");
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值