Struts2 MVC底层的简单实现(二)

2014-11-24 01:43:08 · 作者: · 浏览: 10
=actionElement.elements("result");
List results=new ArrayList();
for(Element resultEle:resultElements){
ResultEntity re=new ResultEntity();
//得到子节点
re.setName(resultEle.attributeva lue("name"));
re.setPage(resultEle.getText());
results.add(re);
}
ae.setResults(results);
actions.add(ae);
}
pe.setActions(actions);

} catch (DocumentException e) {
e.printStackTrace();
}
}
}


写一个index.jsp,为了写跳转链接进行验证:


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



首页



跳转


添加用户


跳转是跳到到success.jsp


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



My JSP 'success.jsp' starting page



This is my JSP page.

成功了


添加用户是跳到adduser.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



My JSP 'addUser.jsp' starting page



This is my JSP page.

添加用户了


写好了jsp之后我们就要过滤这些连接,进行跳转,写一个struts2的过滤器:
public class StrutsFilter implements Filter {
@Override
public void destroy() {

}
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)req;
String path=request.getServletPath();
System.out.println(path);
String[] pathArr=path.split("/");
String namespace=pathArr[1];
String actionString=pathArr[2];
String actionname=actionString.split("!")[0];
String methodname=actionString.split("!")[1].split("\\.")[0];
System.out.println(actionname+":"+methodname);
PackageEntity pe=ConfigUtils.pe;
List actions=pe.getActions();
ActionEntity doAction=null;
for(ActionEntity ae:actions){
if(ae.getName().equals(actionname)){
doAction=ae;
break;
}
}

try {
Class actioncls=Class.forName(doAction.getClassname());
Object actionObj=actioncls.newInstance();
Class cls=actionObj.getClass();
Method actionMethod=cls.getDeclaredMethod(methodname);
String resultValue=(String)actionMethod.invoke(actionObj,null);
List results=doAction.getResults();
ResultEntity re=null;
for(ResultEntity result:results){
if(resultValue.equals(result.getName())){
re=result;
break;
}
}
request.getRequestDispatcher(re.getPage()).forward(request, res);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
ConfigUtil