package com.tzj.service; import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Method; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONException; import net.sf.json.JSONObject; public class BaseServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected Object obj = null; // 请求servlet @Override protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { JSONObject json = new JSONObject(); String[] url = req.getRequestURI().split("/"); String m = url[url.length - 1];// 获取最后一个/符的值 为所调用方法名称 runMethod(req, resp, json, m);// 运行对应方法 } /** * 调用方法?根据请求url 最后/字符串为方法名调用方法 */ private void runMethod(HttpServletRequest req, HttpServletResponse resp, JSONObject json, String m) { try { Class<? extends Object> objClazz = obj.getClass(); Method method = objClazz.getMethod(m, HttpServletRequest.class, HttpServletResponse.class); method.invoke(obj, req, resp); } catch (NoSuchMethodException e) { printErrorJson(resp, json, "无效的URL请求"); e.printStackTrace(); } catch (Exception e) { printErrorJson(resp, json, "请求服务失败!"); e.printStackTrace(); } } /** * 设置本系统常用的信息格式 */ protected void setJson(JSONObject json, boolean success, String message) { try { json.put("success", success); json.put("message", message); } catch (JSONException e) { e.printStackTrace(); } } protected void putJson(JSONObject json, String key, Object obj) { try { json.put(key, obj); } catch (JSONException e) { e.printStackTrace(); } } /** * 系统操作正确 输出json */ protected void printSuccessJson(HttpServletResponse response, JSONObject json, String message) { setJson(json, true, message); printJson(response, json); } /** * 输出 */ protected void printJson(HttpServletResponse response, JSONObject json) { PrintWriter out = null; response.setContentType("application/json; charset=UTF-8"); response.setCharacterEncoding("UTF-8"); try { out = response.getWriter(); out.print(json); out.flush(); } catch (IOException e) { e.printStackTrace(); } finally { out.close(); } } /** * 系统操作失败 输出错误json */ protected void printErrorJson(HttpServletResponse response,JSONObject json, String message) { setJson(json, false, message); printJson(response, json); } }
package com.tzj.service; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletService extends BaseServlet { private static final long serialVersionUID = 1L; @Override public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); super.obj = this; } /** * 请求方法 */ public static void login(HttpServletRequest request,HttpServletResponse response) { String userName = request.getParameter("userName").toString(); String password = request.getParameter("password").toString(); System.out.println("userName:"+userName+" password:"+password); try { request.getRequestDispatcher("/index.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } /** * 请求方法 */ public static void batchSendMsg(HttpServletRequest request,HttpServletResponse response) { try { request.getRequestDispatcher("/test.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } }
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>TestServlet</display-name> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <servlet> <description></description> <display-name>servletTest</display-name> <servlet-name>servletTest</servlet-name> <servlet-class>com.tzj.service.ServletService</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletTest</servlet-name> <!-- 请求时使用 **/test/具体的方法即可访问 --> <url-pattern>/test/*</url-pattern> </servlet-mapping> </web-app>
所需要的jar
源码下载地址:http://pan.baidu.com/s/1mgIGSMs