struts2工具使用教程(struts2类型转化器详解(带例子))

本文目录
struts2类型转化器详解(带例子)
Struts 有两种类型转化器
一种局部 一种全局
如何实现
第一步 定义转化器
第二部 注册转化器
下面做一个局部类型转化器的实例
我们在上面一片日志说过有个变量date类型的 只有我们输入格式为yyyy MM dd的日期类型才会有效 否则则无效 那么我就需要一个类型转化当输入为yyyy MM dd的日期类型也能有效 该怎么做?
这时候我们需要一个自定义的类型转化器
首先我们定义一个类型转化器
我们的类为 DateTypeChange java
package fish;
import java text SimpleDateFormat;
import java util Date;
import java util Map;
import openversion impl DefaultTypeConverter;
publicclass DateTypeChange extends DefaultTypeConverter{//首先得继承默认转化器类
@Override
public Object convertValue(Map《String Object》 context Object value
Class toType) {//第二个参数是你的要转化的数据就是我们下面test Java的brithday属性的值 第三个参数是你传进来的数的值
SimpleDateFormat format=new SimpleDateFormat( yyyyMMdd );//创建一个日期类型的排版格式
try {
if(toType==Date class){
String)value;
return format parse(parm);
}elseif(toType==String class){
Date date=(Date)value;
return format format(date);
}
} catch (Exception e) {
}
returnnull;
}
}
类型转化器书写完毕 接着应该写一个注册文件关联类型转化器和你想转化属性的那个类(这个文件写在转化器的同一个包下)
书写格式 要转化的属性的类型(不加包名) +conversion properties
文件里面写 brithday= fish DateTypeChange
顺便把其他几个test Java也写上
package fish;
import java util Date;
publicclass Test {
private String name;
private String id;
private Date brithday;
public Date getBrithday() {
returnbrithday;
}
publicvoid setBrithday(Date brithday) {
this brithday = brithday;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this name = name;
}
public String getId() {
returnid;
}
publicvoid setId(String id) {
this id = id;
}
public String execute(){
return success ;
}
}
接着 Struts xml
《package name= fish namespace= /test extends= struts default 》
《action name= redfish class= fish Test method= execute 》
《param name= name 》xxxx《/param》
《result name= success 》/index jsp《/result》
《/action》
然后 MyJsp JSP
《form action= /struts test /test/redfish action 》
《input type= text name= username 》
《input type= text name= id 》
《input type= text name= brithday 》
《input type= submit value= 确定 》
最后 index JSP
name=${name}《br》
id= ${id} 《br》
brithday=${brithday}《br》
这时我们在index JSP页面中输入yyyyMMdd类型的日期类型时 struts 也能转化成日期格式处理了
当然如果你想写全局转化器
只要改properties文件
将他移动到web inf/classess下 命名是
xwrok conversion properties
在里面的内容
转化的类型(有包名的)=转化器(包名的)
所以是这么写
Java util Date= fish DateTypeChange
lishixinzhi/Article/program/Java/ky/201311/28598struts2 工作流程
struts2的主要工作流程是这样的:
***隐藏网址***
其次,走一些过滤器,filter,然后进入闻名的struts2的总控FilterDispatcher
穿过上述几层后,会进入ActionMapper,来判断此请求是否需要struts2处理,如果需要,那么由ActionProxy来接管,通过配置管理我们可以找到我们的struts.xml,然后进入真正做事的Action
Invocation,依次穿过我们的拦截器,进入action,从而根据返回的result选择我们要的页面,在拦截器的前半部分去值栈中取值通过标签展示在页面上,最后生成response返回,具体的图如下
此图是我自己总结的,颜色比较多的那个图是struts2的官方图片,只是加了注释
struts2说的应用一些,举例,就像我们图中的,当你点击新增按钮后,会触发一个action给web服务器,服务器接受请求,给对应的web容器,根据上下文可以找到我们的webapp应用,找到总的配置文件web.xml,根据里面的配置来判断action谁去处理,找到filter,反射创建类,回调init,读取struts2的配置文件struts.xml,根据命名空间等找到action,反射创建action类实例,回到execute方法,找到对应的result转向下一个页面,其中虚线框中为右图的一个简写
求高人指点,按照图解释一下struts2的流程
了解运行过程是比较无聊的
1 .客户端初始化一个指向Servlet容器(例如Tomcat)的请求 ,即HttpServletRequest请求。
2 .这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3. 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4 .如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5 .ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6 .ActionProxy创建一个ActionInvocation的实例。
7 .ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 .一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper

更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40






