web SSH app summary Struts2 -part1

STRUTS2 前端转向

今天还是在看关于STRUTS2的转向问题。。因为项目里写得比较乱。。很晕
同时里面的STRUTS.XML的配置比较乱和不全。。又重新学习和复习了下
所以整理了下从JSP到ACTION再到REPORT的流程

1 转向问题
   STRTUS2 XML 控制转向的文件中可以定义控制RETURN 的入口字符串
   RESULT NAME =  对应某个JSP或URL
   比如
<action name="cpuLoadAction" class="cpuLoadActionBean">
<result name="input">/stat/CPULoadForm.jsp</result>
<result name="success">/stat/CPULoadList.jsp</result>
<result name="free">/stat/CPULoadFList.jsp</result>
</action>

也可以定义全局的转向
<global-results>
   <result name="nolicense">/jsp/nolicense.jsp</result>
    <result name="forward">${url}</result>
</global-results>

2 其实底层还是JSP/SERVLET的转向
forward,include,redirect是jsp中web页面(jsp或servelt)的三种不同的路由关系,三个貌似相同,其实还是有许多差别的,而了解这些细微的差别,在web开发中是很重要的。
说明:
一、forward、include由javax.servlet.RequestDispatcher来封装,由包容器container提供RequestDispatcher接口的实现,其中声明如下:
void forward(ServletRequest req,ServletResponse res)
void include(ServeltRequest req,ServletResponse res)
可以通过两种方式得到RequestDispatcher:
     1、ServletContext.getRequestDispatcher(String path);
其中这里的path必须开始为"/",即这里的path必须相对于context的root.
     2、ServeltRequest.getRequestDispatcher(String path)
这里的path可以为相对路径,如果path开始为"/",则也认为是从context的root开始的。
二、Redirect由HttpServletResponse.sendRedirect(String location)来支持
差别:
三个都可以对用户的request进行转发,但是还是有许多的不同,差别最主要集中在如下几个方面:
     1、forward与include共亨Request范围内的对象,而redirect则不行,即:如果一个javabean被声明为request范 围的话,则被forward到的资源也可以访问这个javabean,而redriect则不行。
     2、forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如: req.sendRedriect("http://www.mocuai.com");
Forward功能的实现,这样
      private void setForward(String url,ServletRequest request, ServletResponse response)throws  Exception {  
  HttpServletRequest hreq = (HttpServletRequest) request;
  RequestDispatcher dispatcher = hreq.getSession().getServletContext().getRequestDispatcher(url);
  dispatcher.forward(request,response);

附网上摘录的STRUTS 转向配置的一些变量含义
STRUTS2 框架本身定义了以下的
SUCCESS : 表示ACTION相关代码正确执行和返回(这个是默认的)
NONE:表示执行后不返回到任何页面
ERROR:表示ACTION执行出现错误。返回错误视图
LOGIN:表示因为没有登录而出错。。会返回到此页面要求登录
INPUT:表示需要参数输入的界面。。通常如果没有获得相关的输入参数。会返回到这个页面要求输入参数

<result name="forward" type="">
type 默认为 dispatcher (foward/include) 转向为JSP文件,范围包含REQUEST/SESSION的东西
             redirect 重定向到JSP ,只能保存SEESION中的数据
           redirect-action 重定向至特定的ACTION

你可能感兴趣的:(Web,jsp,struts,servlet,ssh)