@WebServlet("/HelloServlet") public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //request.getSession().setAttribute("hello","Hello Servlet!"); //response.sendRedirect(request.getContextPath()+"/01/02jstl.jsp"); /*客户端跳转需要在服务端Seesion存值,不建议*/ request.setAttribute("hello","Hello Servlet!"); //web中WEB-INF下的路径在客户端无法访问,在服务端可以访问,安全性! RequestDispatcher rd=request.getRequestDispatcher("/WEB-INF/01/02jstl.jsp"); rd.forward(request,response); /*服务端跳转,Dispatcher可以自动添加上下文路径,forward*/ } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } } /////////////////////////多业务支持 @WebServlet("/user02.do") public class UserServlet extends HttpServlet { private static final long serialVersionUID = 1L; public UserServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* * 动态获取访问的是哪一个操作 * 1.if else会随着方法的增多而增多,不易管理(反射) * */ request.setCharacterEncoding("UTF-8");//post传送需在服务端设置编码格式 String method=request.getParameter("method"); if("list".equals(method)){ list(request,response); }else if("register".equals(method)){ register(request,response); }else if("add".equals(method)){ add(request,response); } } protected void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<User> users=(List<User>) request.getSession() .getServletContext().getAttribute("storeUsers"); request.setAttribute("users", users); request.getRequestDispatcher("/WEB-INF/user02/list.jsp").forward(request, response); } protected void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("/WEB-INF/user02/register.jsp").forward(request, response); } protected void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); String nickname=request.getParameter("nickname"); int age=Integer.parseInt(request.getParameter("age")); /* * 此处将用户存储到application中 * */ List<User> users=(List<User>) request.getSession() .getServletContext().getAttribute("storeUsers"); if(users==null){ users=new ArrayList<User>(); } User u=new User(username,nickname,age); System.out.println(u); users.add(u); request.getSession() .getServletContext().setAttribute("storeUsers",users); response.sendRedirect("user02.do?method=list"); } } //////////////////////////////////////////////////MVC 初步,基于命令式的struts1模型 public class BaseServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); try { String method=request.getParameter("method"); Method m=this.getClass().getMethod(method,HttpServletRequest.class,HttpServletResponse.class); String rel=(String) m.invoke(this,request,response); String redirStr="redirect:"; if(rel.startsWith(redirStr)){//判断是服务端跳转还是客户端跳转 response.sendRedirect(rel.substring(redirStr.length())); }else{ request.getRequestDispatcher("/WEB-INF/"+rel).forward(request, response); } } catch (SecurityException e) { e.printStackTrace(); }catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } } @WebServlet("/user03.do") public class UserServlet extends BaseServlet { private static final long serialVersionUID = 1L; public UserServlet() { super(); } /*这是第3版,基于反射,父类BaseServlet继承HttpServlet实现service方法进行方法调用 * 所有本类作为子类不需要实现doPost()和doGet(),只需要自己的逻辑方法 * 不足之处:每个执行方法最后跳转代码都相同,应该想办法解决:参考list()和BaseServlet.class 访问地址:user03.do?method=list * */ @SuppressWarnings("unchecked") public String list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<User> users=(List<User>) request.getSession() .getServletContext().getAttribute("storeUsers"); request.setAttribute("users", users); //request.getRequestDispatcher("/WEB-INF/user03/list.jsp").forward(request, response); return "user03/list.jsp"; } //访问地址:user03.do?method=register public String register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //request.getRequestDispatcher("/WEB-INF/user03/register.jsp").forward(request, response); return "user03/register.jsp"; } //访问地址:user03.do?method=delete public String delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("子类增加方法测试:delete"); return "user03/register.jsp"; } public String update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("子类增加方法测试:update"); return "user03/update.jsp"; } @SuppressWarnings("unchecked") public String add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); String nickname=request.getParameter("nickname"); int age=Integer.parseInt(request.getParameter("age")); /* * 此处将用户存储到application中 * */ List<User> users=(List<User>) request.getSession() .getServletContext().getAttribute("storeUsers"); if(users==null){ users=new ArrayList<User>(); } User u=new User(username,nickname,age); System.out.println(u); users.add(u); request.getSession() .getServletContext().setAttribute("storeUsers",users); //response.sendRedirect("user03.do?method=list"); return "redirect:user03.do?method=list"; } }