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

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>首页</title>
  </head>
                                                                                                                                 
  <body>
      <a href="https://www.linuxidc.com/<%=path%>/user/userAction!toAddUser.action">跳转</a>
      <br/>
      <a href="https://www.linuxidc.com/<%=path%>/user/userAction!addUser.action">添加用户</a>
  </body>
</html>

跳转是跳到到success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <title>My JSP 'success.jsp' starting page</title>
  </head>
                                                                                                                             
  <body>
    This is my JSP page. <br>
    成功了
  </body>
</html>

添加用户是跳到adduser.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'addUser.jsp' starting page</title>
  </head>
                                                                                                                       
  <body>
    This is my JSP page. <br>
    添加用户了
  </body>
</html>

写好了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<ActionEntity> 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<ResultEntity> 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 {
        ConfigUtils.config();   
    }
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a26a5b19d2695f28bb654492bf46572e.html