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