struts2视频学习笔记 11-12(动态方法调用,接收请求参数)

课时11

  • 动态方法调用

   如果Action中存在多个方法时,可以使用!+方法名调用指定方法。(不推荐使用)

1 public String execute(){
2         setMsg("execute");
3         return "success";
4     }
5     
6 public String add(){
7         setMsg("add");
8         return "success";
9     }

    假设访问上面action的URL路径为: /struts/test/list.action   要访问action的add() 方法,我们可以这样调用:/struts/test/list!add.action

 

  • 使用通配符定义action
1 <package name="struts2" namespace="/test" extends="struts-default">
2     <action name="list_*" class="tutorial.HelloWorld" method="{1}">
3         <result name="success">/Test.jsp</result>
4     </action>
5 </package>

  

课时12

  • 接收请求参数

   在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名属性。

   struts2通过反射技术调用与请求参数同名的属性的setter方法来获取请求参数值。

   请求路径:http://localhost:8081/Struts2Demo/test/list_execute?id=111&name=jaid

 1 private int id;
 2 private String name;
 3 public int getId() {
 4     return id;
 5 }
 6 
 7 public void setId(int id) {   
 8     this.id = id;
 9 }
10 
11 public String getName() {
12     return name;
13 }
14 
15 public void setName(String name) {
16     this.name = name;
17 }

   

   post方式

1 <form action="<%=request.getContextPath() %>/test/list_add.action" method="post">
2     id:<input type="text" name="id"><br>
3     name:<input type="text" name="name"><br>
4     <input type="submit" value="submit">
5 </form>

 

   采用复合类型接收请求参数(提供默认构造器)

1 <form action="<%=request.getContextPath() %>/test/list_add.action" method="post">
2     id:<input type="text" name="person.id"><br>
3     name:<input type="text" name="person.name"><br>
4     <input type="submit" value="submit">
5 </form>

 

  • struts2.1.6版本中存在一个Bug,即接收到的中文请求参数为乱码(以post方式提交),原因是struts2.1.6在获取并使用了请求参数后才调用HttpServletRequest的setCharacterEncoding()方法进行编码设置 ,导致应用使用的就是乱码请求参数。这个bug在struts2.1.8中已经被解决,如果你使用的是struts2.1.6,要解决这个问题,你可以这样做:新建一个Filter,把这个Filter放置在Struts2的Filter之前,然后在doFilter()方法里添加以下代码

    1 public void doFilter(...){
    2 
    3   HttpServletRequest req = (HttpServletRequest) request;
    4 
    5   req.setCharacterEncoding("UTF-8");//应根据你使用的编码替换UTF-8
    6 
    7   filterchain.doFilter(request, response);
    8 
    9 }

     

转载于:https://www.cnblogs.com/zziy/p/4886792.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值