struts.xml配置及Action操作
2017-08-24 14:17
441 查看
一、result结果集配置
1.当返回结果一样时,可以配置一个全局结果标签:
<package name="default" extends="struts-default" namespace="/">
<global-results>
<result name="success">/hello.jsp</result>
</global-results>
在Action中,返回的结果都为success时,会跳转到页面hello.jso。
二、result的type属性
1.dispatcher:做转发操作,地址栏地址不变(默认)
2.redirect:做重定向操作,地址栏地址会变
3.redirectAction:重定向到Action,举例如下:
<action name="book" class="com.edu.action.BookAction">
<result name="success" type="redirectAction">order</result>
</action>
<action name="order" class="com.edu.action.OrderAction">
<result name="success" type="redirect">/hello.jsp</result>
</action>当resul的type属性是redirectAction时,result标签里的值是action的name,如上面的order。
三、Action访问Web资源
1.使用ServletActionContext类;
调用静态方法得到request对象:
@Override
public String execute() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
String username=request.getParameter("username");
String password=request.getParameter("password");
String address=request.getParameter("address");
2.使用ActionContext类;
@Override
public String execute() throws Exception{
ActionContext context = ActionContext.getContext();
Map<String, Object> map = context.getParameters();
Set<String> keys = map.keySet();
for(String key:keys){
Object[] obj = (Object[])map.get(key);
System.out.println(Arrays.toString(obj));
}
3.使用接口注入方式。
四、封装获取数据方式
1.通过request对象获取到数据封装到实体类:
@Override
public String execute() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
String username=request.getParameter("username");
String password=request.getParameter("password");
String address=request.getParameter("address");
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setAddress(address);
System.out.println(user); 2.属性封装
(1)在action中定义成员变量,成员变量的名称和表单里的name属性值一样;
(2)生成变量的getter、setter方法;
private String username;
private String password;
private String address;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
3.模型驱动封装(只能把数据封装到一个实体类里面)
(1)Action实现接口ModelDriven;
(2)实现接口的getModel()方法并返回实体类对象;
private User user = new User();
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}
用这种方法时,实体类的属性要和表单里的name属性值一致。
4.表达式封装(可以把数据封装到不同的实体类里面)
(1)在action里面声明实体类变量;
(2)生成变量的getter、setter方法;
private Book book;
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
} 使用这种方式时,表单里的name属性值要在属性前加book:
五、封装数据到list集合
1.在action里声明List;
2.生成List的getter、setter方法;
private List<User> list;
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
} 3.在表单里写表达式:
<input type="text" name="list[0].username"/>
六、封装数据到Map集合
(1)声明Map集合;
(2)生成setter、getter方法;
private Map<String,User> map;
public Map<String, User> getMap() {
return map;
}
public void setMap(Map<String, User> map) {
this.map = map;
} (3)在表单里写表达式:
username:<input type="text" name="map['one'].username"/>
password:<input type="text" name="map['one'].password"/>
address:<input type="text" name="map['one'].address"/>
1.当返回结果一样时,可以配置一个全局结果标签:
<package name="default" extends="struts-default" namespace="/">
<global-results>
<result name="success">/hello.jsp</result>
</global-results>
<action name="form1" class="com.edu.action.Form1Action"> </action> <action name="form2" class="com.edu.action.Form2Action"> </action> <action name="form3" class="com.edu.action.Form3Action"> </action></package>
在Action中,返回的结果都为success时,会跳转到页面hello.jso。
二、result的type属性
1.dispatcher:做转发操作,地址栏地址不变(默认)
2.redirect:做重定向操作,地址栏地址会变
3.redirectAction:重定向到Action,举例如下:
<action name="book" class="com.edu.action.BookAction">
<result name="success" type="redirectAction">order</result>
</action>
<action name="order" class="com.edu.action.OrderAction">
<result name="success" type="redirect">/hello.jsp</result>
</action>当resul的type属性是redirectAction时,result标签里的值是action的name,如上面的order。
三、Action访问Web资源
1.使用ServletActionContext类;
调用静态方法得到request对象:
@Override
public String execute() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
String username=request.getParameter("username");
String password=request.getParameter("password");
String address=request.getParameter("address");
2.使用ActionContext类;
@Override
public String execute() throws Exception{
ActionContext context = ActionContext.getContext();
Map<String, Object> map = context.getParameters();
Set<String> keys = map.keySet();
for(String key:keys){
Object[] obj = (Object[])map.get(key);
System.out.println(Arrays.toString(obj));
}
3.使用接口注入方式。
四、封装获取数据方式
1.通过request对象获取到数据封装到实体类:
@Override
public String execute() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
String username=request.getParameter("username");
String password=request.getParameter("password");
String address=request.getParameter("address");
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setAddress(address);
System.out.println(user); 2.属性封装
(1)在action中定义成员变量,成员变量的名称和表单里的name属性值一样;
(2)生成变量的getter、setter方法;
private String username;
private String password;
private String address;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
3.模型驱动封装(只能把数据封装到一个实体类里面)
(1)Action实现接口ModelDriven;
(2)实现接口的getModel()方法并返回实体类对象;
private User user = new User();
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}
用这种方法时,实体类的属性要和表单里的name属性值一致。
4.表达式封装(可以把数据封装到不同的实体类里面)
(1)在action里面声明实体类变量;
(2)生成变量的getter、setter方法;
private Book book;
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
} 使用这种方式时,表单里的name属性值要在属性前加book:
五、封装数据到list集合
1.在action里声明List;
2.生成List的getter、setter方法;
private List<User> list;
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
} 3.在表单里写表达式:
<input type="text" name="list[0].username"/>
六、封装数据到Map集合
(1)声明Map集合;
(2)生成setter、getter方法;
private Map<String,User> map;
public Map<String, User> getMap() {
return map;
}
public void setMap(Map<String, User> map) {
this.map = map;
} (3)在表单里写表达式:
username:<input type="text" name="map['one'].username"/>
password:<input type="text" name="map['one'].password"/>
address:<input type="text" name="map['one'].address"/>
相关文章推荐
- Struts2中struts.xml的Action配置详解
- struts.xml配置文件(package,namespace,action)
- Struts2中struts.xml的Action配置详解
- struts.xml配置转向另外一个action (type='redirect')出错
- 详解struts.xml配置文件(package,namespace,action)
- struts.xml配置文件(package,namespace,action)
- Struts2中struts.xml的Action配置详解
- struts2中struts.xml中的action标签的method属性配置为"{1}"的时候是什么意味
- Struts2中struts.xml的Action配置详解
- struts.xml配置文件(package,namespace,action)
- Struts2中struts.xml的Action、namespace配置详解
- struts.xml配置文件中的action的各项默认值
- struts.xml配置同名action测试
- struts.xml在Action配置具体解释
- 不用配置Action和Result的struts.xml配置文件
- 动态结果配置:struts.xml中,<result>属性的type配置之redirectAction(请求重定向到指定的Action)
- Struts 配置拦截器导致 验证的某某Action-vationdation.xml文件不好使的问题
- Struts2 方法动态调用,验证表签,xml配置Action
- Struts2中struts.xml的Action配置详解(一)===》 struts2.0中struts.xml配置文件详解 (二)==》Struts2_struts.xml配置及例程三
- struts.xml中配置Action的几种方法