Struts2配置及应用详解

总体概括:Struts2框架中核心组件就是Action、拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合 

一、我们写一个能运行的Demo,再说详细配置

(1)、在web.xml文件配置struts2默认拦截器



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

(2)在src目录下创建struts.xml文件


	
		index.jsp
	

(3)在web目录下创建index.jsp


    hello Struts2

(4)运行流程

1. 所有的访问都回被web.xml中配置的Struts 的 Filter所拦截
2. 拦截之后,就进入struts的工作流程
3. 访问的地址是/index,根据struts按照 struts.xml中的配置,服务端跳转到index.jsp
4. 显示index.jsp的内容

二、struts2中几种基本配置

(1)包配置


    struts2的action必须放在一个指定的包空间下定义
        定义处理请求URL为login.action的Action
            /success.jsp定义处理结果字符串和资源之间的映射关系
            /error.jsp
        
    

(2)命名空间配置

指定了命名空间/manage,则该包下所有的Action处理的URL应该是“命名空间/Action名”  http://localhost:8080/userlogin_struts2/manage/backLogin.action

(3)包含配置


    
    
    
    
   在Struts2中可以将一个配置文件分解成多个配置文件,那么我们必须在struts.xml中包含其他配置文件
       ......

(4)拦截器配置(可以简单地看成是Struts中的"filter")

拦截器可以拦截指定的Action,并且对Action进行相应的操作 ,在本例里,拦截了ProductAction,并且注入了当前时间
public class DateInterceptor extends AbstractInterceptor {
 
    public String intercept(ActionInvocation invocation) throws Exception {
       ProductAction action = (ProductAction)invocation.getAction();
       action.setDate(new Date());
       return invocation.invoke();
    }
}

    
 
    
        
            
        
 
        
            
               
            show.jsp
            list.jsp
        
 
    
 

(5)常亮配置

Struts2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射, 及Action处理结果和物理资源之间的映射关系。除此之外,Struts2框架还包含了一个struts.properties文件,该文件主义了Struts2框架的大量常量属性。但通常推荐也是在struts.xml文件中来配置这些常量属性。
如:后面会讲到Struts2的国际化,它的资源文件位置就用常量属性来指定:

    ......
    

(6)通配符匹配

*Product 表示所有以Product结尾的路径,都会匹配在这个Action上 
method={1}表示第一个通配符 
如果访问的是addProduct就会调用add方法 
如果访问的是listProduct就会调用list方法 
以此类推

    show.jsp
    list.jsp

(7)客户端跳转

public String addPage(){
        return "addPage";
}
//传递参数
public String addPage(){
        name = "default name";
        return "addPage";
}

    addProduct.jsp
addProduct.jsp?name=${name}

(8)struts注解配置

@Namespace("/")
@ParentPackage("struts-default")
@Results({@Result(name="show", location="/show.jsp"),@Result(name="home", location="/index.jsp")})
public class ProductAction {
    private Product product;
    @Action("showProduct")
    public String show() {
        product = new Product();
        product.setName("iphone7");
        return "show";
    }
 
    public Product getProduct() {
        return product;
    }
 
    public void setProduct(Product product) {
        this.product = product;
    }
}






你可能感兴趣的:(java)