Struts2学习笔记——ParamInput(参数的输入)

来源:互联网 发布:java多线程实现高并发 编辑:程序博客网 时间:2024/05/18 02:00

Struts2的参数传递可以简单分为三种。

第一种就是使用Action的属性来接收参数:

Struts.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts>  <constant name="struts.devMode" value="true" />  <!-- 通配符的使用 -->  <constant name="struts.enable.DynamicMethodInvocation" value="false" />   <package name="user" namespace="/user" extends="struts-default">        <action name="*_*" class="com.smile.struts2.front.action.{1}Action" method="{2}">            <result name="success"> /{1}_{2}_success.jsp  </result>        </action>    </package></struts>
我们可以写个带有属性的Action来接受参数:

UserAction:

package com.smile.struts2.front.action;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String name = "";public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}private int age = 0;public String add(){System.out.println("name:"+name+"    age:"+age);return SUCCESS;}public String delete(){return SUCCESS;}}
然后我们在index.jsp中访问的时候可以这么做:

<?xml version="1.0" encoding="GB18030" ?><%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%><% String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030" /><base href="<%=basePath %>"/><title>Insert title here</title></head><body>使用action属性接收参数<a href="user/User_add?name=a&age=8">添加用户</a></body></html>
这种方式action就可以默认接收这个参数。
第二种方式我们使用domainModel(领域模型)来接收参数:

这里我们封装一下用User类来封装一下User的属性:

package com.smile.struts2.front.model;public class User {private String name = "";private int age = 0;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
然后修改UserAction:

package com.smile.struts2.front.action;import com.opensymphony.xwork2.ActionSupport;import com.smile.struts2.front.model.User;public class UserAction extends ActionSupport {private User user = null;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String add(){System.out.println("name:"+user.getName()+"    age:"+user.getAge());return SUCCESS;}public String delete(){return SUCCESS;}}
在index.jsp中可以这样调用:

<?xml version="1.0" encoding="GB18030" ?><%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%><% String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030" /><base href="<%=basePath %>"/><title>Insert title here</title></head><body> 使用Domain Model接收参数<a href="user/User_add?user.name=a&user.age=8">添加用户</a></body></html>
第三种方式使用模型驱动的参数接收:

这里我们修改UserAction实现一个接口:

package com.smile.struts2.front.action;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import com.smile.struts2.front.model.User;public class UserAction extends ActionSupport implements ModelDriven<User>{private User user = new User();public String add(){System.out.println("name:"+user.getName()+"    age:"+user.getAge());return SUCCESS;}public String delete(){return SUCCESS;}public User getModel() {return user;}}
然后在index.jsp中可以这样调用:

<?xml version="1.0" encoding="GB18030" ?><%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%><% String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030" /><base href="<%=basePath %>"/><title>Insert title here</title></head><body> 使用ModelDriven接收参数<a href="user/User_add?name=smile&age=8">添加用户</a></body></html>
这三种的结果都是一样的。具体使用哪种方式根据情况而定。


0 0
原创粉丝点击