- 最简单,最直接的使用方式是直接写在参数中,而且还是多线程可以使用的。这种方式比较的好。但是麻烦
public String hello(HttpServletRequest request,HttpServletResponse response)
- 比较麻烦的一种就是这种啦,我们通过注册spring-mvc中的监听器,然后使用里面的util方法,静态的使用
在web.xml 中加入我们的监听器,触发初始化,spring内部的方法
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
之后我们就可以在程序中进行使用啦,看起来是比较的麻烦的
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
- 第二种还是比较的方便的使用的,我们稍微增加点封装就好了每次在写Action层的时候,对于这样的对象进行封装一下,每一个Action都继承一下这个
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
public class BaseAction {
protected HttpServletRequest getServletRequest() {
return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
}
protected ServletContext getServletContext(){
HttpServletRequest request = getServletRequest();
if (request != null){
return request.getSession().getServletContext();
}
return null;
}
protected HttpServletResponse getServletResponse(){
return RequestResponseContext.getResponse();
}
protected void writeResponse(ActionResult result) throws IOException {
HttpServletResponse response = getServletResponse();
response.setContentType("text/html; charset=utf-8");
OutputStream stream = response.getOutputStream();
stream.write(JsonUtils.object2Json(result).getBytes("utf-8"));
stream.flush();
stream.close();
}
}
- 这里其实我们可以直接的使用spring-mvc直接放回 json对象,也可以按照最原始的,输出到response中去
这里使用了,对于jackjson 的封装
import java.io.IOException;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonUtils {
public static String object2Json(Object obj){
String result = null;
try {
ObjectMapper objectMapper = new ObjectMapper();
result = objectMapper.writeValueAsString(obj);
} catch (IOException e) {
e.printStackTrace();
LogUtils.logException(e);
}
return result;
}
public static Map<?, ?> jsonToMap(String json){
return json2Object(json, Map.class);
}
public static <T> T json2Object(String json, Class<T> cls){
T result = null;
try {
ObjectMapper objectMapper = new ObjectMapper();
result = objectMapper.readValue(json, cls);
} catch (IOException e) {
e.printStackTrace();
LogUtils.logException(e);
}
return result;
}
public static <T> T conveterObject(Object srcObject, Class<T> destObjectType) {
String jsonContent = object2Json(srcObject);
return json2Object(jsonContent, destObjectType);
}
}
logutil
import java.io.PrintWriter;
import java.io.StringWriter;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class LogUtils {
public static void logException(Exception e) {
StackTraceElement[] stacks = (new Throwable()).getStackTrace();
String newClass = stacks[1].getClassName();
StringBuffer logInfo = new StringBuffer(500);
logInfo.append("[");
logInfo.append(stacks[1].getLineNumber());
logInfo.append("]");
logInfo.append(stacks[1].getMethodName());
StringWriter trace = new StringWriter();
e.printStackTrace(new PrintWriter(trace));
logInfo.append(" Exception:");
logInfo.append(trace.toString());
Logger logger = null;
try {
logger = LogManager.getLogger(Class.forName(newClass).getName());
logger.error(logInfo.toString());
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
public static void logInfo(String message, Object... args) {
StackTraceElement[] stacks = (new Throwable()).getStackTrace();
String newClass = stacks[1].getClassName();
StringBuffer logInfo = new StringBuffer(500);
logInfo.append("[");
logInfo.append(stacks[1].getLineNumber());
logInfo.append("]");
logInfo.append(stacks[1].getMethodName());
logInfo.append(" INFO:");
if (null != args){
for (Object arg : args) {
String[] strArr = message.split("\\{\\}", 2);
if (arg == null) {
arg = "null";
}
message = strArr[0] + String.valueOf(arg) + strArr[1];
}
}
logInfo.append(message);
Logger logger = null;
try {
logger = LogManager.getLogger(Class.forName(newClass).getName());
logger.info(logInfo.toString());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void logDebug(String message, Object... args) {
StackTraceElement[] stacks = (new Throwable()).getStackTrace();
String newClass = stacks[1].getClassName();
StringBuffer logInfo = new StringBuffer(500);
logInfo.append("[");
logInfo.append(stacks[1].getLineNumber());
logInfo.append("]");
logInfo.append(stacks[1].getMethodName());
logInfo.append(" DEBUG:");
if (null != args){
for (Object arg : args) {
String[] strArr = message.split("\\{\\}", 2);
if (arg == null) {
arg = "null";
}
message = strArr[0] + String.valueOf(arg) + strArr[1];
}
}
logInfo.append(message);
Logger logger = null;
try {
logger = LogManager.getLogger(Class.forName(newClass).getName());
logger.debug(logInfo.toString());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void logError(String message, Object... args) {
StackTraceElement[] stacks = (new Throwable()).getStackTrace();
String newClass = stacks[1].getClassName();
StringBuffer logInfo = new StringBuffer(500);
logInfo.append("[");
logInfo.append(stacks[1].getLineNumber());
logInfo.append("]");
logInfo.append(stacks[1].getMethodName());
logInfo.append(" INFO:");
if (null != args){
for (Object arg : args) {
String[] strArr = message.split("\\{\\}", 2);
if (arg == null) {
arg = "null";
}
message = strArr[0] + String.valueOf(arg) + strArr[1];
}
}
logInfo.append(message);
Logger logger = null;
try {
logger = LogManager.getLogger(Class.forName(newClass).getName());
logger.error(logInfo.toString());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
ActionResult 封装好的比必要性
public class ActionResult {
private boolean success;
private String message;
private Object data;
public ActionResult(){
}
public ActionResult(boolean success){
this(success, null, null);
}
public ActionResult(boolean success, String message){
this(success, message, null);
}
public ActionResult(boolean success, String message, Object data){
this.success = success;
this.message = message;
this.data = data;
}
/**
* 获取success
* @return success success
*/
public boolean isSuccess() {
return success;
}
/**
* 设置success
* @param success success
*/
public void setSuccess(boolean success) {
this.success = success;
}
/**
* 获取message
* @return message message
*/
public String getMessage() {
return message;
}
/**
* 设置message
* @param message message
*/
public void setMessage(String message) {
this.message = message;
}
/**
* 获取data
* @return data data
*/
public Object getData() {
return data;
}
/**
* 设置data
* @param data data
*/
public void setData(Object data) {
this.data = data;
}
}