18.01.11,web学习第四十天,还有一年,努力吧青年 struts2第二天 action创建+result处理+获取数据方式
struts2第二天
1. Struts2结果处理方式(转发,重定向等)
经常遇到的是Struts2核心配置struts-default下的package包被继承的。这些具体怎么用?搜相关class导入源码。查看doc文档有案例。
1)dispatcher--doExecute()方法 源码里封装了HttpServletRequest(ServletActionContext.getRequest())然后放行forward()。和以前学的类似。提高了代码的复用。 2)redirect-doExecute()方法 封装了HttpServletresponse.sendRedirect();方法 3)Chain-转发到Action(不常用) 转发到Action使用chain(链),
4)redirectAction-重定向到Action(不常用) 拼装了路径并调用了父类的重定向方法、 |
如何查看/**文档?
会翻译文档
|
2. 访问servletAPI方式 1 ActionContext
原理:它并不影响原本的域啥的。。。
ActionContext的生命周期和request相同,所以它不推荐数据存在request域中,直接存在ActionContext中即可。 1)ActionContext.getContext()拿到大map再.put(,)即可,至于转发后如何取得数据,和request域取数据相同! 原理:struts2框架更改了request域取数据的方法,当取数据时,既从request域中取也从ActionContext的 map中取。 2)精确从各个域取得数据 ${requestScope.xxx}|${sessionScope.xxx}|${applicationScope.xxx}
3)以后往三个域放数据
|
访问servletAPI方式 2 ServletActionContext(不推荐) 1)其中获得原生request和原生response,servletContext的都是在底层调用ActionContext的getContext().get(“”)的方法。 2)获得原生session是通过获得的request对象拿到:request.getSession(); |
访问servletAPI方式 3 实现接口方式以...Aware结尾(不推荐) 每一种对象都有一个接口对应。如:servletRequestAware
|
3. 如何获得参数!!
1)获得表单提交的参数 Post Action的生命周期+线程安全 写一个成员变量(与参数键名相同)加此成员变量的属性。Get/set方法。然后使用这个即可。 Servlet对象在整个服务器当中只有一个!!!所以servlet不允许这样写一个成员变量由request拿到参数赋值给这个变量。因为它是线程不安全的,当其它线程同时访问时,会有错误出现! 然而s2的Action对象是每次请求时都会创建一个Action对象。所以其成员变量不会受到干扰。(线程安全) 2)拓展 Struts2 MVC 设计思想: M:Filter c:Action v:result 3)不止hibernate框架的成员变量使用包装类,建议Struts2也使用包装类修饰变量。例:private Integer age; 4)提交上来的参数一律为String类型,Struts2框架可以自动转换8种数据类型和对应的包装类。 5)支持特定类型的字符串转换为Date 1998-01-05 接收:private Date date+get/set方法 |
4. 以上(属性驱动获得)获得参数方式不常用:
1)对象驱动获得参数: 和属性驱动类似,也是在成员变量位置声明一个成员变量,只不过这个成员变量不是基本数据类型,而是一个对象,给出get/set方法,准备这个domain类,在提交数据的页面这样写:
|
5. 模型驱动获得提交的参数(暂时只记怎么做)
1)后台操作: 实现接口modelCriven<>泛型给定封装的对象,实现方法返回对象,该对象必须在成员变量位置new出。否则返回为null
|
6. 集合类型参数封装
1)List 后台:成员变量位置:private List<String> list;+get/set方法 前台: 2)Map前台必须给键名 Private map<String ,String> map+get/set方法;
|
7.struts2和hibernate有重复的包,需要删除一个
8.一般重定向 return “toxxx”;
9.注意:当主键为native时,注意主键不能为字符串
10. 复习
1) App包下有一个blank-war包,解压。得到需要jar包 书写Action 书写src/struts.xml文件 配置filter过滤器:StrutsprepareAndExceptionFilter 2)struts2的核心配置 <Struts> <Package name=”” namespace=”” extends=””> <action name=”” class=”” method=””> <result name=”” type=””></result> </action> </package> </Struts> 3)常量配置 解决乱码 后缀名配置 开发模式 动态方法调用 4)动态方法调用符合搜索优化 xxxAction_*+{1} 5)action的创建方式 POJO类(略),实现接口Action(略),继承类ActionSupport。 此Action方法注意: 无参,public,返回值String,可抛异常Throw。 |