struts2学习笔记(1)——配置

步骤一:IDEA创建web项目,在web目录下创建web.xml、lib目录、classes目录。导包到lib目录下,指定输出目录到classes下(
1. 打开project structure
2. 设置 project complier output 为:
E:\project\j2ee\web\WEB-INF\classes
)
在web.xml中配置一个Filter,所有请求都会被过滤到这个Filter
< web-app >
     < filter >
         < filter-name >struts2</ filter-name >
         < filter-class >
             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
         </ filter-class >
     </ filter >
 
     < filter-mapping >
         < filter-name >struts2</ filter-name >
         < dispatcher >FORWARD</ dispatcher >
         < dispatcher >REQUEST</ dispatcher >       
         < url-pattern >/*</ url-pattern >
     </ filter-mapping >  
  </web-app>

步骤二:配置struts.xml
在src目录下创建struts.xml文件
这是最简单的struts.xml配置
其效果是当访问index路径的时候,服务端跳转到index.jsp
<? xml   version = "1.0"   encoding = "UTF-8" ?>
<!DOCTYPE struts PUBLIC
     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 
< struts >
   < package   name = "basicstruts"   extends = "struts-default" >
   < action   name = "index" >
     < result >index.jsp</ result >
   </ action >   
</ package >
 </struts>

步骤三:部署tomcat,测试

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


把Model的数据显示在视图JSP上
Model层使用一个简单的Product.jav用于存放数据
ProductAction用于控制

在struts.xml中配置跳转
该配置表示 访问路径 /showProduct 会调用 ProductAction 类的 show 方法
服务端跳转到show.jsp
< struts >
   < package   name = "basicstruts"   extends = "struts-default" >
   
   < action   name = "showProduct"   class = "com.how2java.action.ProductAction"   method = "show" >
     < result   name = "show" >show.jsp</ result >
   </ action >   
   
</ package >
</struts>
   
web目录下创建show.jsp文件
通过 EL表达式 ,取出product的name
注:   ${product}会访问对应的Action的   getProduct() 方法

注: 严格得说,是Struts通过getProudct()方法返回product对象,然后再把product对象通过request.setAttribute("product", product) 放在"product" 这个key上,这样就方便EL表达式去取出来了
(做个实验是否是request.setAttrubute(); 
改成< result   name = "show" type="redirect" >show.jsp</ result >客户端跳转,那么show.jsp收不到product对象)

<%@page isELIgnored="false"%>
${product.name}

测试
原理:
1. 访问路径 /showProduct
2. 所有访问都被struts的filter所拦截,并进入struts的工作流程
3. 根据配置文件struts.xml, 会执行ProductAction的show方法
4. 在show方法中,将实例属性product指向一个新的对象,并设置名称为iphone7
5. 服务端跳转到show.jsp
6. 在show.jsp中,访问ProductAction.getProduct() 获取实例属性product,并显示其名称iphone7



jsp提交product的name到action  
然后action又跳转回showProduct.jsp把提交上来的name显示出来
addProduct.jsp
< html >
< form   action = "addProduct" >
  < input   type = "text"   name = "product.name" >
     < br />
  < input   type = "submit"   value = "submit" >
</ form >
</ html >

配置struts.xml
< action   name = "addProduct"   class = "com.how2java.action.ProductAction"   method = "add" >
     < result   name = "show" >show.jsp</ result >
   </ action >   

ProductAction增加add方法
在addProduct.jsp中提交数据的field是product.name
会自动调用对应的ActionsetProduct(Product product)方法进行数据的注入
所以ProductAction必须提供setProduct(Product product)方法
在执行到第14行的时候,jsp传过来的name已经被注入进了属性product中了

原理图
1. 访问路径 /addProduct
2. 所有访问都被struts的filter所拦截,并进入struts的工作流程
3. 根据配置文件struts.xml, 会执行ProductAction的add方法
4. 在add方法执行之前,Struts生成一个新的product对象,并把页面传递过来的name设置在该对象上,接着把该对象通过setProduct()方法,注入ProductAction
5. 服务端跳转到show.jsp
6. 在show.jsp中,访问ProductAction.getProduct() 获取注入的product,并显示其名称


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值