⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actionservlet.java

📁 webwork study w ebwork study
💻 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 + -