我对 Java 中 Struts 框架的理解

前言:当时在工作中,一个正在学习计算机的同学对struts不是太理解,但是马上又要迎接考试,我给她大概讲了一遍一个简单的操作流程,讲完之后,归纳成了下面的笔记。

一:Struts2的执行过程

页面发送请求被web.xml配置的拦截器拦截,之后进入struts.xml文件,找到对应的action的名字,进入action类,执行execute或者自定义的方法,在方法里进行一系列业务操作(比如操作数据库),在方法的最后return "*"(返回值),如果返回值跟struts.xml文件的你的页面中的name值相同,就跳转相应的页面。

接下来图文详细进行说明,这里我用MyEclipse来做演示,Eclipse是一个道理的。

我对 Java 中 Struts 框架的理解_第1张图片
struts2_1.png

首先先点开web.xml来看一下

  
  
     
    
    index.jsp  
    
  

web.xml是初始化配置信息的,这里发现这个文件里只有一个欢迎页面,就是我直接运行这个项目,首页是index.jsp,这里可以更改成自己想要跳转的页面。

用MyEclipse导入struts2

点击项目右键选择MyEclipse,然后选择Add Struts Capabilities...((⊙﹏⊙)这里不是很好截图,。。。)

我对 Java 中 Struts 框架的理解_第2张图片
struts2_2.png

这里选择struts2.1,因为我们用的就是struts2,URL pattern选择/*(拦截所有请求),当然这里也可以固定死,可以选择.action(以.action进行结尾),.do(以.do进行结尾),然后直接finish即可,因为我们现在也不需要额外的jar包。

这里会发现项目下多了个struts2.xml

我对 Java 中 Struts 框架的理解_第3张图片
struts2_3.png

web.xml也发生了变化:

  
  
     
    
    index.jsp  
    
    
    struts2  
      
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
      
    
    
    struts2  
    /*  
    

添加action和配置struts.xml

我们来配置struts.xml之前先创建一个action类

我对 Java 中 Struts 框架的理解_第4张图片
struts2_4.png

HiAction:

package cn.com.struts2Demo.action;  
  
import com.opensymphony.xwork2.ActionSupport;  
  
@SuppressWarnings("serial")  
public class HiAction extends ActionSupport{  
      public String execute(){  
         //两个sucess一个意思  
         //return "success";  
         return SUCCESS;            
      }  
}  

当页面提交走这个action类的时候,默认走execute方法,前提是必须要继承ActionSupport,继承之后会重写execute方法,而且看我上面代码,当我继承之后,我可以直接return SUCCESS,这里的SUCCESS是因为我继承了ActionSupport才有的,当然还有INPUTERROR等。

编写struts.xml文件:

  
  
  
      
         
           /success.jsp  
         
      
   

这里的pageage是java的包机制,name="myPage"是我给这个包起的名字,extends了struts-default,这里可以记成它是默认写法,意思就是我继承了它,也就用了它的一些功能,下面的是我给action起个名字,对应的是HiAction这个类,这里要跟表单对应才能进入对应的action,这里的success就是我在action类的execute方法中写的reutn SUCCESS,这两个要对应,才能跳转到/success.jsp。

编写页面

index.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 'index.jsp' starting page  
      
      
          
      
      
      
    
    
    
    

说明:这里的hi.action的hi要跟struts.xml中的action的name要对应

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>  
<%  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%>  
  
  
  
    
      
      
    My JSP 'success.jsp' starting page  
      
      
      
          
      
      
      
  
    
    
    
    

hi,struts2!

好啦,页面访问localhost:8080/struts2Demo


不过,也遇到了问题:

我对 Java 中 Struts 框架的理解_第5张图片
struts2_5.png

修改index.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 'index.jsp' starting page  
      
      
          
      
      
      
    
    
    
    

struts.xml:

  
  
  
       
         
           /success.jsp  
           /index.jsp  
         
      

说明这个再加上method={1},就是代表hi_方法名,我action里有个execute方法,所以修改成这样了,不知道上面为什么报错。。。好久没接触了。。。

重新编译运行:

struts2_6.png

你可能感兴趣的:(我对 Java 中 Struts 框架的理解)