Servlet基类封装BaseServlet

package com.web.base;

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

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

import com.utils.CookieUtils;
import com.utils.MyBeanUtils;
import net.sf.json.JSONSerializer;

public class BaseServlet extends HttpServlet {
	protected HttpServletRequest request;
	protected HttpServletResponse response;

	

	
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.request=request;
		this.response=response;
		
		//根据method请求参数值反射子类执行相应的方法
		String method = request.getParameter("method");
		if (method == null || method.trim().equals(""))
			method = "execute";
		try {
			Method m = this.getClass().getMethod(method);
			if (m != null) {
				String path = (String) m.invoke(this);
				if (path != null) {
					request.getRequestDispatcher(path).forward(request, response);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
	
	//不带method请求参数执行的方法,用于被子类重写
	public String execute()throws Exception {
		return null;
	}
	
	//设置响应内容类型是html
	protected void setHtmlResponseType() {
		response.setContentType("text/html;charset=utf-8");
	}
	
	//向客户端响应输出内容
	protected void write(Object obj) throws IOException {
		response.getWriter().print(obj);
	}
	
	protected String getString(String param) {		
		return request.getParameter(param);
	}
	
	protected String getString(String param,String defaultValue) {
		String value=getString(param);	
		if(value==null) {
			value=defaultValue;
		}
		return value;
	}
	
	
	protected int getInt(String param) {			
		return Integer.parseInt( getString(param));
	}
	
	protected int getInt(String param,int defaultValue) {	
		String value=getString(param);	
		if(value==null) {
			return defaultValue;
		}
		return  Integer.parseInt(value);
	}
	
	protected double getDouble(String param) {			
		return Double.parseDouble( getString(param));
	}
	
	protected double getDouble(String param,double defaultValue) {	
		String value=getString(param);	
		if(value==null) {
			return defaultValue;
		}
		return  Double.parseDouble(value);
	}
	
	//把请求参数转换为实例对象
	protected <T> T paramToBean(Class<T> clazz) {
		return MyBeanUtils.requestParamToBean(clazz, request);
	}
	
	//输出json到客户端
	protected void writeJson(Object obj) throws IOException {
		response.setContentType("application/json;charset=utf-8");
				
		String name=obj.getClass().getSimpleName();
		
		//基本数据类型不用转换为json
		if("Integer".equals(name)||"Short".equals(name)||"Long".equals(name)||"Float".equals(name)||"Double".equals(name)||"Char".equals(name)||"String".equals(name)||"Boolean".equals(name)) {
			response.getWriter().print(obj);
		}else {
			response.getWriter().write(JSONSerializer.toJSON(obj).toString());
		}
			
		
		
	}
	
	//根据键名获取Cookie对象
	protected Cookie getCookie(String key) {
		return CookieUtils.getCookie(request, key);
	}
	
	//根据键名获取Cookie值
	protected String getCookieValue(String key) {
		return CookieUtils.getCookieValue(request, key);
	}
	
	//添加Cookie
	protected void addCookie(String key,String value) {
		CookieUtils.addCookie(request, response, key, value);
	}
	
	//根据键名移除Cookie
	protected void removeCookie(String key) {
		CookieUtils.removeCookie(request, response, key);
	}
}

你可能感兴趣的:(Utils,#,Java,SE)