jsp中有九个内置对象是可以直接使用的request,response,session,application,config,exception,page,out,pageContext其中常用的有五个out,session,request,response,application
转发(forward) 重定向(redirect) Forward代表直接转发,redirect代表间接转发。直接转发方式(Forward ),客户端和浏览器只发出一次请求,Serviet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。间接转发方式(Redirect )实际是两次请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。简单地说就是转发是一次请求和一次响应,重定向是两次请求和两次响应
//重定向 response.sendRedirect("success.jsp"); //转发 request.setAttribute("msg","账户名或密码错误!请重新输入"); request.getRequestDispatcher("login.jsp").forward(request,response);点击抽奖页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> </head> <body> <% Integer score = (Integer)request.getAttribute("score"); String msg = ""; if(score != null){ switch(score){ case 0: msg = "获得0分:奖励0元"; break; case 1: msg = "获得1分:奖励100元"; break; case 2: msg = "获得2分:奖励200元"; break; case 3: msg = "获得3分:奖励500元"; break; case 4: msg = "获得4分:奖励1000元"; break; case 5: msg = "获得5分:奖励5000元"; break; } %> <form action="drawServlet"> <input type="submit" value="抽奖" /> </form> <%=msg %> </body> </html>servlet页面
public class DrawServlet extends HttpServlet { private static HashMap<String, Integer> scoreMap = new HashMap<String, Integer>(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String ip = request.getLocalAddr(); Integer score = scoreMap.get(ip); Random random = new Random(); int i = random.nextInt(6); score = i; scoreMap.put(ip, score); request.setAttribute("score", score); request.getRequestDispatcher("index.jsp").forward(request, response); } }实现一个ip抽奖一次只需要在生成数字之前加上判定此ip对应数字是否为空即可
管理人员登录 获取登录页传递来的数据如果是指定数据及登录管理页面成功否则返回登陆失败