package cn.newgxu.bbs.web.servlet; import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.newgxu.bbs.common.util.Util; import cn.newgxu.bbs.service.UserService; /** * * @author hjc * @since 4.0.0 * @version $Revision 1.1$ */ @SuppressWarnings("serial") public class AjaxHandlerServlet extends HttpServlet { private UserService userService = (UserService) Util.getBean("userService"); public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getServletPath(); path = path.substring(0, path.lastIndexOf(".")); String handler = getHandlerMapping().get(path); if (handler == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND, "Unknown path:" + path); return; } try { response.setHeader("Cache-Control", "no-cache"); Class<?>[] parameterTypes = new Class[] { HttpServletRequest.class, HttpServletResponse.class }; Method method = this.getClass().getDeclaredMethod(handler, parameterTypes); method.invoke(this, request, response); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } } protected Map<String, String> getHandlerMapping() { Map<String, String> handlers = new HashMap<String, String>(); handlers.put("/accounts/validateNickName", "validateNickName"); handlers.put("/accounts/validateLoginName", "validateLoginName"); handlers.put("/request/get", "handleGetParameters"); handlers.put("/request/post", "handlePostParameters"); return handlers; } protected void validateLoginName(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/plain"); PrintWriter out = response.getWriter(); String userName = request.getParameter("userName"); boolean exist = false; try { exist = userService.isUserNameInUser(userName); } catch (Exception e) { e.printStackTrace(); // throw new ServletException(e); } if (exist) { out.print("inuse"); } else { out.print("good name"); } out.close(); } protected void validateNickName(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/plain"); PrintWriter out = response.getWriter(); String nick = request.getParameter("nick"); boolean exist = false; try { exist = userService.isNickNameInUser(nick); } catch (Exception e) { e.printStackTrace(); out.print("good name"); out.close(); } if (exist) { out.print("inuse"); } else { out.print("good name"); } out.close(); } protected void handleGetParameters(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html;charset=gbk"); PrintWriter out = response.getWriter(); String name = request.getParameter("name"); String gender = request.getParameter("gender"); String greetings = "尊敬的" + name; if (gender.equals("m")) { greetings += "先生"; } else { greetings += "女士"; } out.print(greetings); out.print(",您好!"); out.close(); } protected void handlePostParameters(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html;charset=gbk"); PrintWriter out = response.getWriter(); request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); String gender = request.getParameter("gender"); String greetings = "尊敬的" + name; if (gender.equals("m")) { greetings += "先生"; } else { greetings += "女士"; } out.print(greetings); out.print(",您好!"); out.close(); } public void setUserService(UserService userService) { this.userService = userService; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { execute(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { execute(request, response); } }