设为首页 加入收藏

TOP

Struts2 MVC底层的简单实现(二)
2014-11-24 01:43:08 来源: 作者: 【 】 浏览:2
Tags:Struts2 MVC 底层 简单 实现
=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

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇使用Lua脚本语言开发出高扩展性的.. 下一篇利用Aspose.Imaging for .NET转换..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: