javaWeb开发之控制层框架Struts2入门知识点总结

第一篇:Struts2基础1
  1.Struts2是基于MVC设计模式的Web应用框架,本质上相当于一个Servlet, Service(业务层)和DAO层照以往的编写!
  2.Struts2 = Struts1 + webwork
  3.Struts2的MVC:
> Model javaBean | javaBean
> View JSP | JSP
> Controller Servlet | Action
  4.Struts2的三大核心
> 拦截器(interceptor) filter
> Action servlet
> ognl与valueStack request域
  5.使用struts2框架:
> 导入相关jar包
> 在web.xml中配置一个Filter(只有配置了StrutsPrepareAndExecuteFilter前端控制器(核心控制器) ,才可以使用struts框架)
> struts.xml配置
> 创建Action来完成逻辑操作
  6.Struts2框架执行流程
> 接收浏览器请求
> 被StrutsPrepareAndExecuteFilter拦截
> 调用struts框架默认的拦截器(interceptor)完成部分功能
> 执行Action中的操作
> 根据Action中的方法的返回结果选择跳转页面的Result视图
  7.Struts2配置文件的加载顺序
> default.properties 声明了struts2框架的常量
> struts-default.xml
> struts-plugin.xml
> struts.xml
> struts.properties
> web.xml
> bean相关配置
  8.struts.xml文件配置总结
   标签 | 属性
   package | name namespace extends abstract
   action | name class method
   result | name type
  说明:如果找不到指定的class及对应的method就会执行ActionSupport类中的execute(默认返回:“success”)方法,默认的页面跳转方式为请求转发dispatcher。
  9.Action类的三种创建方式:
> 创建一个pojo类;普通java类
> 实现Action接口;使用视图和方法
> 继承ActionSupport类;
  10.在Action中如何获取请求参数
> 属性驱动
[1] 直接在action类中提供与请求参数匹配属性,提供get/set方法;
[2] 在action类中创始一个javaBean,对其提供get/set,在请求时页面上要进行修改,例如 user.username,user.password;要使用ognl表达式。
> 模型驱动
1) 让Action类要实现一个指定接口ModelDriven
2) 实例化模型对象(就是要new出来javaBean)
3) 重写getModel方法将实例化的模型返回。
  11.页面跳转方式:<result type=“XXX”></result>
> 默认值:dispatcher 请求转发 针对JSP
> chain 请求转发 针对Action
> redirect 重定向 针对JSP
> redirectAction 重定向 针对Aciton
> 等等...
  
  第二篇:Struts2基础2
  1.Struts2中获取Servlet
> 通过ServletActionContext类的静态方法
如:getRequest()、getResponse()、getServletContext()...
> 采用注入方式
拦截器“servletConfig”判断类实现的接口,返回相应对象。
如:ServletRequestAware、ServeltResponseAware、ServletContextAware等
  2.OGNL表达式(三要素:表达式、OgnlContext上下文、Root根)
> 基本介绍:Object-Graph Navigation Language(对象图导航语言)
ognl-3.0.6.jar包来支持OGNL表达式
* 支持对象操作;
* 支持静态成员访问;
* 访问Ognl上下文、根;如果不是从根中获取数据,需要加“#”号;
* 操作集合
作用:通过struts框架的<s:property value=“表达式”>标签,从valueStack中获取数据。
  3.valueStack 值栈
> 基本介绍:
* 主要作用:将我们action中产生的数据携带到页面上,相当于一个容器。
* 接口 com.opensymphony.xwork2.util.ValueStack
* 我们主要使用其实现类:
  com.opensymphony.xwork2.ognl.OgnlValueStack
* 当客户端向我们发送一个请求,服务器就会创始一个Action来处理请求,struts2中的action是一个多例,每一次请求都会有一个新的action对应。所以它不存在线程安全问题。一个valueStack对应一个action,valueStack贯穿整个action的生命周期。
* rquest---Action---ValueStack
* struts2框架将valueStack保存在request中。
> 内部结构:两部分
* root:就是一个ArrayList,存储action的相关数据;
* context:就是一个Map,存储一些引用,关于web开发中的相关信息;
> 获取ValueStack
* 方式一:通过request对象
request.getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);
* 方式一:通过ActionContext对象(常用)*****
ActionContext context = ActionContext.getContext();
ValueStack valueStack = context.getValueStack();
> 关于ActionContext
ActionContext是action上下文,strtus2框架它使用actionContext来保存Action在执行过程中所需要的一些对象,例如session,application…
> valueStack存储数据:
* 手动向valueStack存储数据
valueStack.push(“itcast”) 一般用来存储对象
valueStack.set(“username”,“tom”)
valueStack.getContext().put(key,value) 相当于一个map
* 手动向valueStack自动存储
  1) Struts2框架自动将action对象存储到valueStack中 stack.push(action)
  2) 如果action实现了ModelDriven接口,那么模型对象会存储到valueStack中。
> valueStack获取数据:

> valueStack获取数据:
Struts2框架对request进行了增强,重写了getAttribute方法,如果在request域中查找不到数据,就会在valueStack中获取。
  4.interceptor 拦截器:基于spring aop思想
> interceptor基本介绍:
主要是拦截Action的操作,在action的执行前或执行后进行一些其它的功能操作。拦截器链(拦截器栈)简单说,就是可以将多个拦截器形成一个链,在访问它们时依次访问。
> 自定义interceptor
1.所有的Interceptor都要实现接口:
com.opensymphony.xwork2.interceptor.Interceptor
2.在配置文件中声明Interceptor
可以将多个interceptor封装成一个stack
其中:细粒度的拦截器需要继承MethodFilterInterceptor类,来设置拦截的方法和不拦截的方法。

3.在Action的配置中引入自定义的interceptor stack
   注意:当我们显示的引入了一个自定义的Interceptor,那么默认的defaultStack就不会在导入,需要手动导入。
 
  第三篇:Struts2基础3
  1.Struts2文件上传
> 浏览器端注意事项:
* method = “post”
* enctype = “multipart/form-data”
* <input type=“file” name=“XX”/>
> Action中提供三个属性,并利用FileUtils.copyFile(srcFile, destFile)
  关于上传文件的三个属性:
* private File upload; 上传的文件
* private String uploadContentType; 上传文件的MIMETYPE类型
* private String uploadFileName; 上传文件的名称
> 文件上传相关参数设置:
* 设置文件上传的大小限制:
<constant name=“struts multipart.maxSize” value=“20971520” />

* 设置文件上传类型和扩展名:

* 多文件上传:
input标签中name属性值相同;
Action中三个属性使用数组或者集合;
  2.Struts2框架Ajax开发
  2.1关于JSON
> 基本介绍:
* JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
* json简单说就是javascript中的对象和数组。
* 对象:{key:value,key:value,...}
* 数组:["java","javascript","vb",...]
* 对象和数组嵌套:
> Fastjson的使用:
* jar包:fastjson-1.2.9.jar
* JSONObject.toJSONString(obj)
* JSONArray.toJSONString(array)
* 处理日期格式:日期属性添加注解@JSONField(format=“yyyy-MM-dd”)
* 转为json串时的属性过滤:new PropertyFilter(){   }
> Jackson的使用:
* jar包:jackson-all-1.9.0.jar
* ObjectMapper mapper = new ObjectMapper();
* mapper.writerValueAsString( obj )
* 处理日期格式:对象转json串前mapper.setDateFormat(new SimpleDateFormat(“yyyy-MM-dd”))
* 转为json串时的属性过滤:
1>.添加注解(写死了):@JsonIgnore
2>.编码方案:

  需要在JavaBean类上添加一个注解:

  2.2注解开发
> 引入jar包:Struts2.1版本之后

> 图解注解配置和开发:

 
  是在action,actions,struts,struts2这样的包下扫描注解。
 
  
  
   BY------早起的蜗牛
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值