您的位置:首页 > 编程语言 > Java开发

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 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"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: