Struts2知识点小结(二)
一、结果视图的配置
<result name="success">/success.jsp</result>
1、局部结果视图
在action标签内部配置 局部结果视图只能当前Action使用
<action name="quick_*" class="com.itheima.action.QuickAction" method="{1}">
<!-- 结果视图的属性:
name: 逻辑试图名 与Action的方法分返回值进行匹配
type: 视图的跳转类型
dispatcher(默认值):Action转发视图(jsp)
redirect:Action重定向视图(jsp)
redirectAction:Action重定向Action
-->
<result name="success" type="dispatcher">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
2、全局结果视图
<!-- 全局结果视图:
当前包下的所有的action都可以共享的视图资源 称之为全局结果视图
-->
<global-results>
<result name="success" type="dispatcher">/success.jsp</result>
<result name="login">/login.jsp</result>
<result name="error">/error.jsp</result>
<result name="index">/index.jsp</result>
</global-results>
二、在struts2中获得Servlet相关API的方式
获得在javaweb阶段常用的对象 request、response、session、servletContext...
1、通过ServletActionContext获取
ServletActionContext:与Servlet相关的Action的上下文对象,该对象相当于一个工具类,维护Servlet相关对象的引用
//获得Servlet相关API对象
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
ServletContext servletContext = ServletActionContext.getServletContext();
2、使用接口注入方式
public class ServletAPIAction2 extends ActionSupport
implements ServletRequestAware,ServletResponseAware,ServletContextAware{
public String show(){
//获得request
System.out.println(request);
return NONE;
}
private HttpServletRequest request;
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
三、参数封装
1、属性驱动
通过Action属性进行参数封装的方式 称其为属性驱动
public class Param1Action extends ActionSupport {
//封装单个属性只需要一共set方法即可
private String username;
public void setUsername(String username) {
this.username = username;
}
//封装实体 需要同时提供get/set方法
private Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
private List<String> strList;
private List<User> userList;
private Map<String,User> userMap;
public Map<String, User> getUserMap() {
return userMap;
}
public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
public List<String> getStrList() {
return strList;
}
public void setStrList(List<String> strList) {
this.strList = strList;
}
public String show(){
//方式一
//String username = (String)ServletActionContext.getRequest().getParameter("username");
//方式二 单个属性的封装,不用手动创建对象
//System.out.println(username);
//实体封装
/*System.out.println(user);
System.out.println(person);*/
System.out.println(strList);
System.out.println(userList);
System.out.println(userMap);
return NONE;
}
}
2、模型驱动
在Action中显示的指定模型对象是谁,那么在封装数据时直接写模型对象的属性名就可以
步骤:
1、Action实现ModelDriven<指定实体类型>
2、实现接口的getModel方法(model对象需要手动实例化)
public class Param2Action extends ActionSupport implements ModelDriven<User> {
//模型驱动
//封装实体
public String show() {
System.out.println(user);
return NONE;
}
User user = new User();
public User getModel() {
// TODO Auto-generated method stub
return user;
}
}
比较模型驱动与属性驱动区别?
属性驱动:提供set/get方法,实体对象不需要手动创建,同时封装多个实体
模型驱动:实现ModelDriven接口,模型对象必须要手动创建,不能同时封装多个实体
Struts2知识点小结(二)的更多相关文章
- Struts2知识点小结(一)
一.struts2简介 1.Struts2是一个基于MVC设计模式的Web应用框架 只要是web层框架 一般就会遵守MVC设计模式 2.struts2与struts1的关系? ...
- Struts2知识点小结汇总
Struts2部分 1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层).业务逻辑层.数据持久层.[其中WEB层会使用前 ...
- Struts2知识点小结(四)--拦截器与注解开发
一.Struts2的拦截器(interceptor) 作用:当请求进入struts2框架后(进入之前可以用filter进行拦截),想对请求进行拦截操作(功能增强.权限控制),需要拦截器组件 1.str ...
- Struts2知识点小结(三)--值栈与ognl表达式
1.问题一 : 什么是值栈 ValueStack 回顾web阶段 数据交互问题? 客户端提交数据 到 服务器端 request接受数据+BeanUtils实体封装 ...
- Spring知识点小结(二)
一.配置非自定义的Bean(数据源DataSource模型) DBCP数据源: 导入dbcp的jar包:dbcp+pool+connector 代码实现: ...
- Hibernate知识点小结(二)
一.持久化对象和标识符 1.持久化类 配置完关系后,操作的实体对应的类,成为持久化类 (Customer) 2.持久化类标识符(oid:object id) 3.持久 ...
- C++重要知识点小结---3
C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...
- SpringBoot 系列教程之事务隔离级别知识点小结
SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...
- disruptor笔记之四:事件消费知识点小结
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- JavaScript Callback 回调函数
JavaScript callback回调函数 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货.在这 ...
- IntelliJ IDEA搭建SpringBoot的小Demo
首先简单介绍下Spring Boot,来自度娘百科:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进 ...
- Js 对象数组,转化为字符串
var str = [{"cuid":"23910","content":"是","type":&q ...
- selenium(2.4.0)中不能导出web drive 代码
最近在学习selenium.要做web自动化测试.咱只会C# .就想了,这个测试用例要是能用C# 控制,保存起来,就可以以后自动运行了,不用每次点击运行了. 看了看它的文档,就开始试验了,录脚本折腾了 ...
- 如何将bug杀死在摇篮里?
阿里妹导读:在欧洲中世纪的传说中,有一种叫“人狼”的妖怪,就是人面狼身.它们会讲人话,专在月圆之夜去袭击人类.而且传说中对“人狼”用一般的枪弹是不起作用的,普通子弹都伤不到也打不死它,只有一种用银子作 ...
- ZHS16GBK编码中汉字缺失
生产中使用ZHS16GBK编码的Oracle数据库,若出现字,则会出现乱码 原因是此字不存在在ZHS16GBK编码中 解决方法可以:此二字结构相同,但是后面的在ZHS16GBK编码中出现
- C语言 返回指针的函数
#include <stdio.h> char * test() { return "itcast"; } int main(int argc, const char ...
- IOS 极光推送(第三方框架)
下载极光推送文件,将以下两个文件导入项目中 APService.h libpushSDK.a #import "HMAppDelegate.h" #import "APS ...
- GPU使用
GPU .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1p ...
- System.Chare的成员
实现效果: 知识运用: System.Char的静态方法 (判断一个给定的字符是否为数字 字母 标点符号或其他) 实现效果: static void CharFunctionality() { Con ...