Struts2的基础入门

Struts2方法:

1.概述

2.Struts2执行流程

3.package标签

4.action标签

5.result标签

6.Struts常量配置

7.分模块开发

8.Action三种编写方式

//第一种方式:编写一个普通类,不实现和继承任何类和接口
//第二种方式,实现Action接口
//第三中方式,继承ActionSupport类(常用)

9.访问Action的方法

//第一种,使用Method属性进行配置
//缺陷:action每个方法都需要配置,如果action里面有多个方法,要配置很多的action
<action name="hello" class="com.wangyi.action.HelloAction" method="save">
  
//第二种:使用通配符实现(重点)
//在action标签里面的name属性,name属性值里面写符号*星号。表示匹配任意内容
<action name="hello_*" class="com.wangyi.action.HelloAction" method="{1}">
  
//第三种:动态访问(不常用)

10.结果页面配置

//全局结果页面的作用范围只在一个package里面

//局部结果页面,如果又有局部,又有全局。action以局部为准

11.Rusult标签的type属性

//type属性:如何到路径里面(转发还是重定向)
//type属性:1.默认值,做转发操作,值是 dispatcher 2.做重定向操作,值是:redirect
//这两个值一般针对页面中的配置
//配置到其他的action里面
//chain:转发到action 一般不用,缓存问题
//redirectAction:重定向到action
<action name="book" class="com.heima.action.BookAction">
	<result name="success" type="redirectAction">order.action</result>
</action>
<action name="order" class="com.heima.action.OrderAction">
	<result name="success">/world.jsp</result>
</action>

12.action获取表单提交数据的三种主要方式

//第一种方式:使用ActionContext获取
//第一步,获取context对象
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));
		}

//第一第二种方法比较常用,第三种不常用

13.在action操作域对象

13.Struts2提供获取表单数据的几种方式

  • 原始方式封装表单数据

  • 属性封装

    //使用属性封装获取表单数据到属性里面,不能把数据直接疯转到实体类对象里面

  • 模型驱动封装(重点)

    public class DataAction extends ActionSupport implements ModelDriven {
    //创建对象
    //前提要求:表单输入项name属性值和实体类属性名称要一样
    private User user = new User();
    @Override
    public String execute() throws Exception {
    System.out.println(user.toString());
    return NONE;
    }
    @Override
    public User getModel() {
    //返回创建user
    return user;
    }
    }
    //使用模型驱动和属封装注意问题:在一个action中,获取表单数据可以属性封装,使用模型封装,不能同时使用属性封装和模型驱动封装获取同一个表单数据,如果同时使用了,只有执行模型驱动封装有数据

  • 表达式封装

//模型驱动和表达式的区别:
//相同点:使用表达式封装和模型驱动封装都可以把数据封装到实体类对象里面
//不同点:1.使用模型驱动只能把数据封装到一个实体类里面,在一个action里面不能使用模型驱动把数据封装到不同的实体类对象里面2.使用表达式封装可以把数据封装到不同的实体类对象里面

	private User user;
	private Book book;
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public Book getBook() {
		return book;
	}
	public void setBook(Book book) {
		this.book = book;
	}
	name:<input type="text" name="user.name"/><br/>
	password:<input type="text" name="user.password"/><br/>
	address:<input type="text" name="user.address"/><br/>
	bookname:<input type="text" name="book.pname"/><br/>

14.封装数据到集合里面

  • 封装到List集合

    //封装到list集合里面 第一步:声明list变量 第二步:生成list变量的set和get方法 第三步:在表单输入项里面写表达式
    private List list;

      public List<User> getList() {
      	return list;
      }
      public void setList(List<User> list) {
      	this.list = list;
      }
      @Override
      public String execute() throws Exception {
      	System.out.println(list);
      	return NONE;
      }
      name:<input type="text" name="list[0].name"/><br/>
      password:<input type="text" name="list[0].password"/><br/>
      address:<input type="text" name="list[0].address"/><br/>
      name:<input type="text" name="list[1].name"/><br/>
      password:<input type="text" name="list[1].password"/><br/>
      address:<input type="text" name="list[1].address"/><br/>
    
  • 封装数据到Map集合

页面表达式:

posted @ 2017-08-27 01:46  秀秀是只脉兽  阅读(117)  评论(0)    收藏  举报