4、Struts2的其他知识

4.1ModelDriven

如果希望传递对象信息到action,但对象信息较多时,需要传递大量的参数并且要设置这些参数,工作量很大,所以建议的方式是在action中直接创建相应的对象,此时在jsp页面中可以通过如下一种方式进行参数的传递

但是使用这样的方式带来的问题是在表单中的名称不能按照我们开发人员的习惯来定义,此时就需要通过ModernDriven来实现如下传值

1、让action实现ModelDriven接口。

2、覆盖getModel方法

3、当一个类实现了ModelDriven之后,就会将这个model放入到root中,所以我们的input中不用加任何的对象信息就可以直接放置到msg对象中

4.2、类型转换

当使用modelDriven来实现参数接受时,可能由于类型的不一致(特别是一些复杂类型)导致接受参数报错,此时就需要使用类型转换器

类型转换器有两种模式,一种全局模式(所有的action均有作用),另外一种是局部模式(针对某个特定的action起作用)

全局模式实现步骤

1、写一个类继承StrutsTypeConvert

2、在类路径创建xwork-conversion.properties文件,在这个文件中说明要转换的对象

以上的全局转换器是针对所有的需要转换的类来指定,但是有时候可能会根据不同的action来进行转换,这个时候就会使用到局部转换器

1、创建一个类继承StrutsTypeConverter

2、在action所在的包中创建ActionName-conversion.properties


4.3、文件上传

Struts2对文件上传提供了天生的支持,只要设置一个表单域为file并且将form的类型提供为tultipart/form-data,struts2会自动完成普通表单和文件表单的识别。

1、定义一个文件提供相应的上传form

2、在action中定义相应的属性来接收file对象,如果是一组属性定义一个数组,如果是一个属性定义一个对象。属性的名称必须是表单中的name名称


4.4、拦截器


拦截器是Struts2中非常重要的一种控制手段

在开发中可以使用拦截器来拦截用户的请求,并且进行相应的权限控制

1、创建拦截器

写一个类继承AbstractInterceptor

2、配置拦截器

2.1、先创建拦截器

2.2、在action中使用拦截器

问题:当使用了这个拦截器之后,出现了一个问题,原来应该传的值都变为null了。?

是因为当我们设定了拦截器之后,默认拦截器就不起作用了(默认拦截器是在struts-default.xml中设定的),所以在创建新的拦截器时必须可以拥有原有的默认拦截器,可以使用拦截器栈来处理

学习视频教程中拦截器的实例

4.5、国际化(I18N)


1、国际化的概念

  ResourceBudle可以支持国际化,通过配置文件(.properties)完成国际化的支持的

2、创建配置文件的要求

  Message_zh_CN.properties(_CN表示的是国家的编码,可以省略)

  Message_en_UK.properties(针对美国英语的配置文件,同样也可以省略_UK)

3、使用java.util中ResourceBudle可以实现

4、Struts2的实现

   局部、全局的

  局部的一般不使用

  全局有两种方式:

  4.1、针对package的全局设定

     ·在action的所在包的任何路径下创建package_zh.properties或package_en.propterties

  ·在这两个文件中加入相应的key和value

  ·让需要进行国家的Action实现ActionSupport类之后在页面使用<s:text name=""/>完成调用

  4.2、全局国际化

  ·在类路径下创建相应的资源文件

  ·在配置中加入全局资源文件的名称

4.6struts2的常用标签


Struts2提供了一组非常好用的Form来帮助我们完成开发

1、Struts2的theme

  稴truts2提供一组主题帮助开发者来实现界面操作,默认主题是xhtml,

  修改主题可以在配置文件中设置

2、常用标签

4.7、服务器端验证

Struts2提供了大量的服务器端验证方法(XML,Annotation等)

时间: 2024-11-08 12:33:13

4、Struts2的其他知识的相关文章

Struts2的一个问题: 找不到struts.xml的路径问题

一. 最近在学习Struts2的一些知识,在使用Struts2搭建框架的时候,部署到服务器上的时候出现上面的问题: 三月 19, 2016 1:43:24 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.ser

Struts2 源码分析——过滤器(Filter)

章节简言 上一章笔者试着建一个Hello world的例子.是一个空白的struts2例子.明白了运行struts2至少需要用到哪一些Jar包.而这一章笔者将根据前面章节(Struts2 源码分析——核心机制)里的机制图片来分析源码.如果还不明白核心机制的朋友,请转到对应的章节进行阅读.笔者为了方便读者阅读,也把图片在次贴到了本章中.如下 根据图片笔者就明白我们首要分析便是橙黄色(Servlet Filters).也就是传说的过滤器(Filter).相信看过笔者前面几个章节的读者都明白strut

Struts2(五)——核心拦截器

Struts框架一共为我们提供了35个拦截器,其中默认的拦截器有18个,框架访问action的异常处理,配置信息处理,转发重定向选择,上传等等等等,都是这18个拦截器中设置的,起着非比寻常的作用.而这些在struts-default.xml文件中都有设置,看一下吧: [html] view plaincopyprint? <interceptor-stack name="defaultStack"> <interceptor-ref name="except

J2EE学习篇之--Struts2技术详解

前面说到了Struts1的相关知识,下面来说一下Struts2的相关知识,我们知道现在Struts2使用的比Struts1多,Struts2已经替代Struts1成为主流的框架了... 摘要 Struts2是在WebWork2基础发展而来的.和struts1一样, Struts2也属于MVC框架.不过有一点大家需要注意的是:尽管Struts2和Struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的.那么既然有了struts1,为何还要推出struts

和Struts2框架的初体验

Struts2的基础知识 问题一:什么是框架 框架是一个基本概念上的结构用于解决复杂的问题,应用在特定的领域内.使用框架可以使代码的复用大大提高,开发效率和质量也得到提高;他提供统一的标准,使后期维护的时间大大降低.归根到底框架就是用来提高开发效率的一种工具. 问题二:什么是Struts2框架 简单来说Struts2框架是基于MVC设计模式的Web应用框架,他本质相当于一个Servlet,所以他在MVC设计模式中相当于一个控制器,用来建立模型和视图的数据交互. 问题三:为什么使用Struts2而

SSH开发模式——Struts2(第三小节)

struts2框架的知识点,虽然分了几个小节,感觉内容还是挺多的,但是你仅仅是入门了而已,想要进一步地提升自己,你得有一颗持之以恒的学习的心,最后的内容我都将在这篇博客中讲到,所以篇幅可能会有点长,希望大家能够耐心阅读. 首先介绍一下struts2的配置. 还记得我们创建的test.jsp文件吗?直接看到这篇博客的同学们也不用去翻阅我之前的博客,因为我在之前的博客中只是简单地介绍了使用,而并没有深入,我并没有讲解每一步的作用,和为什么要这样写.所以,直接从该篇博客开始阅读学习也是可以的,我将从最

Structs框架

一.准备工作及实例 1.解压struts-2.1.6-all.zip(structs网上下载) apps目录:struts2自带的例子程序 docs目录:官方文档. lib 目录:存放所有jar文件. Src 目录:源文件存放地 2.六个基本包 struts2-core-2.1.6.jar :开发的核心类库 freemarker-2.3.13.jar :struts2的UI标签的模板使用freemarker编写 commons-logging-1.0.4.jar :日志包 ognl-2.6.11

提高生产性工具 - 各种工具的集成(三)

这周学习了一下Struts2的一些知识,按照网络上各种博文的指点,跌跌撞撞,捣鼓出了一个Struts2的Demo了. 原来一直是学习NET的,一下子开始玩Java的东西,还需要一点时间来适应Eclapse. Struts的Jar包导入都是依靠Maven进行的,据说Maven可以直接生成Struts的工程,尝试了一下,公司网络不给力,没有成功. Struts的Helloworld环境配置,网络上有很多文章了,这里也不多唠叨了.有一点请注意, 如果你使用Maven的话,在百度上检索 Maven St

博客园随笔中点击标签可以跳到当页指定位置的方法

我们在写随笔的时候,如果内容比较多,那么我们就希望在最前面的索引中能自带跳转本文中的具体问之的功能.下面就简单介绍下载博客园中要实现这样的功能的方法.例如文章结构可能如下,那么我们希望点击索引中的索引项时能具体调到具体内容中对应的位置. 索引 1.Struts2是什么玩意?核心?主要的功能? 2.Struts2的核心知识 内容 一  .Struts2是什么玩意?核心?主要的功能? ....... 二.Struts2的核心知识 ...... 具体方法是将你要跳转的标题插入设置书签,之后在标签中插入