您的位置:首页 > 理论基础 > 计算机网络

BaseServlet 继承 httpServlet

2016-03-30 08:49 513 查看
BaseServlet 核心

package cn.core;

import java.io.IOException;
import java.lang.reflect.Method;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 1:继承HttpServlet让它成为Servlet<br>
* 2:声明它的抽象的则是指这个类不能配置到web.xml中去<br>
*/
public abstract class BaseServlet extends HttpServlet {
/**
* 3:直接重写service方法,以避免执行doGet/doPost分支
*/
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 6:由于所有请求,都是先从这儿过去了,所以可以直接统一的设置请求编码和响应的类型
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
// 7:用户通过参数的形式通知调用哪一个方法?method=add调用add方法
// 解析出这个参数
String methodName = req.getParameter("method");
if (methodName == null || methodName.trim().equals("")) {
// 默认为exuecte
methodName = "execute";
}
// 8:再通过反射调用子类方法,可以使用this反射出子类。
// 反射出方法
try {
Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
// 执行调用
method.invoke(this, req,resp);
} catch (Exception e) {
throw new RuntimeException(e);
}

}

/**
* 4:开发一个默认的方法,如果用户没有指定执行哪一个方法,则默认就执行默认的这个方法
* 5:将这个方法修改成抽象的,以避免继承BaseServlet的类忘记开发execute
*/
public abstract void execute(HttpServletRequest req, HttpServletResponse resp) throws Exception;
}

方法测试


package cn.examples;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.core.BaseServlet;

public class PersonServlet extends BaseServlet {
// http://localhost:9999/mvc/person @Override
public void execute(HttpServletRequest req, HttpServletResponse resp) throws Exception {
System.err.println("这是默认的execute...");
}

// http://localhost:9999/mvc/person?method=addPerson public void addPerson(HttpServletRequest req, HttpServletResponse resp) {
System.err.println("this is add...");
}

// http://localhost:9999/mvc/person?method=upload public void upload(HttpServletRequest req, HttpServletResponse resp) {
System.err.println("this is upload img...");
}

// http://localhost:9999/mvc/person?method=del public void del(HttpServletRequest rr, HttpServletResponse resp) {
System.err.println("this is delete...");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: