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("请不要重复提交");
}
}