📄 actionservlet.java
字号:
package jaction.workspace;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.JspException;
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import jaction.datapool.*;
import jaction.utility.*;
import jaction.xml.*;
/**
* 业务调用Servlet,用于web访问<br>
* @author Tony
* @version 1.4.2.4
* 去掉fcode变量限制,采用request name 标示动作 <br>modify by yanger 2003-4-24 13:32
*/
public class ActionServlet extends HttpServlet {
/**
* 当前调用的业务bean的名称
*/
private String beanName;
/**
* 错误页面
*/
public static String JACTION_ERROR_PAGE;
/**
* ActionServlet初始化
*/
public void init(ServletConfig sc) throws ServletException {
super.init(sc);
JACTION_ERROR_PAGE = JactionConfigResource.getMessage("jaction.error.page");
}
/**
* 调用通过xml解析得到的javabean进行业务逻辑处理,以及通过解析xml文件得到跳转的页面,以及进行跳转
* @param request 数据请求对象
* @param response 数据返回对象
* @throws ServletException
* @throws IOException
*/
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession httpSession = request.getSession();
long beginTimeMillis = System.currentTimeMillis();//得到业务处理的开始时间
//得到action name
String actionKey = RequestUtil.getServletNameNoExtend(request);
String servletName = RequestUtil.getServletName(request);
request.setAttribute(Jaction.JACTION_ACTION_KEY, actionKey); //放入请求数据包
SysLogger.infoLog("actionKey:"+actionKey);
SysLogger.infoLog("====================== processing begin ================================");
/**
* 创建对象,用于实例化业务Bean
*/
Object obj = new Object();
/**
* 构造数据输入类
*/
InputParam ip = new InputParam(request,response);
ip.log();
/**
* 构造数据输出类
*/
OutputParam op = new OutputParam();
/**
* 构造系统数据类
*/
SystemParam sp = new SystemParam(request,response);
sp.log();
/**
* UAT 测试
*/
JactionHelper.UAT(ip,op,sp);
//数据校验 ----validate
try{
if(ActionParser.getValidateValueOfActionAttr(actionKey)==null){
//不定制校验程序
}else{
//定制校验
ActionErrors actionErrors = JactionHelper.validate(ip,op,sp);
//是否业务处理定制错误处理
if(actionErrors!=null&&actionErrors.size()!=0){
httpSession.setAttribute(Jaction.ACTIONERRORS_KEY,actionErrors);
String pageId = ActionParser.getValidateValueOfActionAttr(actionKey);
httpSession.setAttribute(Jaction.JACTION_ACTION_FORWARD,ActionParser.getPathValueOfPageAttr(pageId));
response.sendRedirect(response.encodeURL(servletName+Jaction.VIEW_EXTEND_URL));
return;
}else{
httpSession.setAttribute(Jaction.ACTIONERRORS_KEY,null);
}
}
}catch(Exception e){
SysLogger.error("数据校验 ----validate err"+e);
httpSession.setAttribute(Jaction.EXCEPTION_KEY,e);
response.sendRedirect(response.encodeURL(servletName+Jaction.VIEW_EXTEND_URL));
return;
}
/**
* 声明业务Bean的Class
*/
try{
//业务请求分发,调用
Controller.invoke(ip, op, sp);
}catch(JactionException je){
SysLogger.error("MainProcess", "doPost", "调用相对应的业务Bean的Process方法出错");
// je.printStackTrace();
httpSession.setAttribute(Jaction.EXCEPTION_KEY,je);
response.sendRedirect(response.encodeURL(servletName+Jaction.VIEW_EXTEND_URL));
//response.sendRedirect(JACTION_ERROR_PAGE);
//设置jspException属性
//request.setAttribute("javax.servlet.jsp.jspException",new JspException(je.getMessage()));
//this.getServletContext().getRequestDispatcher(JACTION_ERROR_PAGE).forward(request,response);
return;
}catch(Exception e){
SysLogger.error("MainProcess", "doPost", "未知异常...."+e);
e.printStackTrace();
//设置jspException属性
httpSession.setAttribute(Jaction.EXCEPTION_KEY,e);
response.sendRedirect(response.encodeURL(servletName+Jaction.VIEW_EXTEND_URL));
//response.sendRedirect(JACTION_ERROR_PAGE);
//request.setAttribute("javax.servlet.jsp.jspException",new JspException("错误所在的类:"+beanName+" 错误原因:"+e.getMessage()));
//this.getServletContext().getRequestDispatcher(JACTION_ERROR_PAGE).forward(request,response);
return;
}
/**
* 数据输出类的实类设置到session的属性里面。
*/
httpSession.setAttribute(Jaction.JACTION_OUTPUTPARAM_KEY,op);
//request.setAttribute(Jaction.JACTION_OUTPUTPARAM_KEY,op);
SysLogger.infoLog("---------------------- OutputParam(OP) ----------------------");
op.log();//OP日志打印
/**
*得到servlet执行完毕时的毫秒时间
*/
SysLogger.infoLog("====================== processing End ================================");
SysLogger.infoLog("Jump Page -- "+op.getForward());
long endTimeMillis = System.currentTimeMillis();
SysLogger.infoLog("Total time -- "+(endTimeMillis - beginTimeMillis)+"MSEL");
SysLogger.infoLog("");
SysLogger.infoLog("");
SysLogger.infoLog("");
/**
* 跳转
*/
FileUtil.log(Jaction.JACTION_OUTPUTPARAM_KEY+":"+op.getForward());
//this.getServletContext().getRequestDispatcher(op.getForward()).forward(request,response);
httpSession.setAttribute(Jaction.JACTION_ACTION_FORWARD,op.getForward());
//encodeURL 防止cookie关闭不能使用
response.sendRedirect(response.encodeURL(servletName+Jaction.VIEW_EXTEND_URL));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -