直接通过maven方式,创建webapp archetype的项目
servlet可以看成是Controller,接收页面传递的参数及调用service层方法
编写servlet后,需要在web.xml中注册(servlet需要继承HttpServlet,重写doGet()和doPost()方法)
public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String userCode = req.getParameter("userCode"); String userPassword = req.getParameter("userPassword"); UserService userService = new UserServiceImpl(); User user = userService.login(userCode, userPassword); if (user != null && userPassword.equals(user.getUserPassword())) { req.getSession().setAttribute(Constants.USER_SESSION, user); resp.sendRedirect("jsp/frame.jsp"); } else { req.setAttribute("error", "用户名或密码错误"); req.getRequestDispatcher("login.jsp").forward(req, resp); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } } <!-- 用户登录servlet --> <servlet> <servlet-name>loginServlet</servlet-name> <servlet-class>com.richard.servlet.user.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>loginServlet</servlet-name> <url-pattern>/login.do</url-pattern> </servlet-mapping>前端页面和servlet之间的交互,都需要经过filter,可以使用filter进行字符编码过滤;用户未登录过滤跳转等统一操作
编写好filter之后,同样需要在web.xml中注册
public class CharacterEncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { } } <!-- 字符编码过滤器 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>com.richard.filter.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> public class SysFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) servletRequest; HttpServletResponse resp = (HttpServletResponse) servletResponse; User user = (User) req.getSession().getAttribute(Constants.USER_SESSION); if (user == null) { resp.sendRedirect(req.getContextPath() + "/login.jsp"); } else { filterChain.doFilter(req, resp); } } @Override public void destroy() { } } <!-- 用户登录过滤器 --> <filter> <filter-name>sysFilter</filter-name> <filter-class>com.richard.filter.SysFilter</filter-class> </filter> <filter-mapping> <filter-name>sysFilter</filter-name> <url-pattern>/jsp/*</url-pattern> </filter-mapping>