--------android培训java培训期待与您交流------
1 表单数据封装:复杂数据类型和基本数据类型;
2 输入校验:针对某个方法和针对所有方法,以及手动和基于xml文件进行校验,使用资源文件中的内容
3 文件上传,多文件上传
4 权限拦截,即拦截器,拦截器栈;
5 防止表单重复提交的使用;
6 struts2常用标签
7 多种视图的使用;原样输出,转发,重定向
8 类型转换:全局以及局部
9 国际化资源文件的使用
在一个应用中用到以上所有的知识点。
前奏:导入开发jar包和准备配置文件,这些个配置文件我会在一起说明,有注释的。
配置文件:
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<filter>
<filter-name>struts2</filter-name>
<!-- struts使用的是过滤器启动的 -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteF ilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!--国际化资源文件的使用,value为基本名messageResource -->
<constant name="struts.custom.i18n.resource" value="messageResource" />
<!--动态方法调用,设置为false -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<!--指定编 式为UTF-8 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!--访问路径的后缀名设置.action -->
<constant name="struts.action.extension" value="action" />
<!--设置文件上 最大的容量 -->
<constant name="struts.multipart.maxSize" value="2097152" />
<!--jsp页面显示模式为simple -->
<constant name="struts.ui.theme" value="simple" />
<!--设置包名为user,必须要继承struts-default包,以使用struts的 心功能,名称空间设置为itcast -->
<package name="user" extends="struts-default" namespace="/itcast">
<interceptors>
<!--指定拦截器为permission,权限拦截,如果没有权限不允许操作 -->
<interceptor name="permission"
class="cn.itcast.web.struts.interceptors.PermissionInterceptor" />
<!-- 定义一个拦截器 -->
<interceptor-stack name="register">
<!--使用这个权限拦截器,定义在系统拦截器之前 <interceptor-ref name="permission"></interceptor-ref> -->
<!-- 使用系统拦截器,必须要使用 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
<!-- 使用防止表单重复提交拦截器 -->
<interceptor-ref name="token"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!--定义默认拦截器 ,当一个aciton没有指定拦截器时,将使用默认拦截器 ;出于本应用业务逻辑考虑,,将其注释起来,不使用 -->
<!-- <default-interceptor-ref name="register"/> -->
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<!--使用通配符的方式对处理请求的方法进行匹配,class:指定某个类 射为register_*action;还可以指定类型转换器当然是针对指定方法的;
converter="DateTypeConverter" -->
<action name="register_*" class="cn.itcast.web.struts.actions.RegisterAction"
method="{1}">
<!--使用拦截器 ,默认设置的拦截器 将不起作用 -->
<interceptor-ref name="register" />
<!--设置视图名称为input,一般为错误消息显示页面,type,指定跳转方式,默认是dispatcher,即内部请求转发 -->
<result name="input" type="dispatcher">/WEB-INF/page/register.jsp</result>
<!--设置视图名称为success,默认为success,跳转类型为,重定向,但是重定向的路径不能在WEB-INF目录下 -->
<result name="success" type="redirect">/message.jsp</result>
<!--invalid.token视图 ,当用户重复提交表单后跳转到这个页面; -->
<result name="invalid.token">/tokenerror.html</result>
</action>
<action name="fileupload" class="cn.itcast.web.struts.actions.FileUploadAction">
<result name="message" type="redirect">/message.jsp</result>
<result name="input">/WEB-INF/page/upload.jsp</result>
</action>
<!-- action名称为registerui,还有一个converter即转换器,局部类型转换器 类名和方法没有指定的话,默认为;ActionSupport,execute,还可以使用通配符; -->
<action name="registerui">
<!-- 结果视图为指定,则默认为success;类型未指定,表示转发,重定向不能定位到web-inf目录下; -->
<result>/WEB-INF/page/register.jsp</result>
</action>
<action name="fileuploadui">
<result>/WEB-INF/page/upload.jsp</result>
</action>
</package>
</struts>
据配置文件整体的说下整个程序的流程;
首先在index.jsp页面挂出两个超链接,文件上 和用户注册,这 个超链接的地址是采用的struts的url 签;
点击超链接后会跳转到一个jsp页面,即注册或者文件上 页面,这是 为我们将这些页面配置成了一个action, 此可以用struts的url 签;不至于将路径写死,这是很优雅的方式;
当我们进入注册页面后,form表单采用的是struts,同 可以直接写action名称,在form表单中 入了token 签,防止表单重复提交;
定义的提交路径是一个action,对这个jsp表单或者说action进行处理,比如类型转换,表单封装和输入 验,权限拦截等;
如果 验不通过则还是跳到这个页面,通过fieldError,进行显示错误消息;如果是表单重复提交,则跳到相应的页面进行显示提示消息;
如果提交成功则跳转到全局消息显示页面,给用户友好提示,提示用户的操作,并在session中存储一个 记。
文件上 页面类似的思路;
这是整个程序的架构,下面分别对每个模块进行分析解释;
历史上的今天
热度
在LOFTER的更多文章
--------android培训java培训期待与您交流------
\r\n
1 表单数据封装:复杂数据类型和基本数据类型;
2 输入校验:针对某个方法和针对所有方法,以及手动和基于xml文件进行校验,使用资源文件中的内容
3 文件上传,多文件上传
4 权限拦截,即拦截器,拦截器栈;
5 防止表单重复提交的使用;
6 struts2常用标签
7 多种视图的使用;原样输出,转发,重定向
8 类型转换:全局以及局部
9 国际化资源文件的使用
在一个应用中用到以上所有的知识点。
前奏:导入开发jar包和准备配置文件,这些个配置文件我会在一起说明,有注释的。
', blogTag:'', blogUrl:'blog/static/2172762092013330811373', isPublished:1, istop:false, type:0, modifyTime:1400160349048, publishTime:1367323786389, permalink:'blog/static/2172762092013330811373', commentCount:0, mainCommentCount:0, recommendCount:0, bsrk:-100, publisherId:0, recomBlogHome:false, currentRecomBlog:false, attachmentsFileIds:[], vote:{}, groupInfo:{}, friendstatus:'none', followstatus:'unFollow', pubSucc:'', visitorProvince:'', visitorCity:'', visitorNewUser:false, postAddInfo:{}, mset:'000', mcon:'', srk:-100, remindgoodnightblog:false, isBlackVisitor:false, isShowYodaoAd:false, hostIntro:'JAVA软件工程师,有扎实的Java基础,熟悉JavaEE技术,对框架的底层原理熟悉,学习能力强。', hmcon:'0', selfRecomBlogCount:'0', lofter_single:'' }
评论