黑马程序员--Struts2.3.7技术的汇…
2015-12-24 10:27
627 查看
--------android培训java培训期待与您交流------ 需求:定义一个用户注册系统:复习Struts2的所有知识点:1
表单数据封装:复杂数据类型和基本数据类型;2
输入校验:针对某个方法和针对所有方法,以及手动和基于xml文件进行校验,使用资源文件中的内容3 文件上传,多文件上传4 权限拦截,即拦截器,拦截器栈;5 防止表单重复提交的使用;6 struts2常用标签 :7 多种视图的使用;原样输出,转发,重定向8 类型转换:全局以及局部9 国际化资源文件的使用在一个应用中用到以上所有的知识点。前奏:导入开发jar包和准备配置文件,这些个配置文件我会在一起说明,有注释的。配置文件:web.xml:
评论(0)| 用微信 “扫一扫”将文章分享到朋友圈。 用易信 “扫一扫”将文章分享到朋友圈。 喜欢 推荐 0人 |
转载
关闭玩LOFTER,免费冲印20张照片,人人有奖! 我要抢>
b:2,
loftPermalink:'',
id:'fks_087065092087084068093082082070072084080068086081080065084095',
blogTitle:'黑马程序员--Struts2.3.7技术的汇总之一',
blogAbstract:'\r\n
--------android培训java培训期待与您交流------\r\n 需求:定义一个用户注册系统:\r\n
复习Struts2的所有知识点:1
表单数据封装:复杂数据类型和基本数据类型;2
输入校验:针对某个方法和针对所有方法,以及手动和基于xml文件进行校验,使用资源文件中的内容3 文件上传,多文件上传4 权限拦截,即拦截器,拦截器栈;5 防止表单重复提交的使用;6 struts2常用标签 :7 多种视图的使用;原样输出,转发,重定向8 类型转换:全局以及局部9 国际化资源文件的使用在一个应用中用到以上所有的知识点。\r\n前奏:导入开发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:'' }{list a as x}
{if !!x}
{if
x.visitorName==visitor.userName}
{else}
{/if}
{if x.moveFrom=='wap'} {elseif
x.moveFrom=='iphone'} {elseif
x.moveFrom=='android'} {elseif
x.moveFrom=='mobile'} {/if}
${fn(x.visitorNickname,8)|escape}{/if} {/list}{if !!a}
${fn(a.nickname,8)|escape}
${a.selfIntro|escape}{if
great260}${suplement}{/if}
{/if}
表单数据封装:复杂数据类型和基本数据类型;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.StrutsPrepareAndExecuteFilter</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中存储一个 记。
文件上 页面类似的思路;
这是整个程序的架构,下面分别对每个模块进行分析解释;转发至微博 转发至微博阅读(0)|
评论(0)| 用微信 “扫一扫”将文章分享到朋友圈。 用易信 “扫一扫”将文章分享到朋友圈。 喜欢 推荐 0人 |
转载
历史上的今天
最近读者
热度
在LOFTER的更多文章
关闭玩LOFTER,免费冲印20张照片,人人有奖! 我要抢>评论
this.p={ m:2,b:2,
loftPermalink:'',
id:'fks_087065092087084068093082082070072084080068086081080065084095',
blogTitle:'黑马程序员--Struts2.3.7技术的汇总之一',
blogAbstract:'\r\n
--------android培训java培训期待与您交流------\r\n 需求:定义一个用户注册系统:\r\n
复习Struts2的所有知识点:1
表单数据封装:复杂数据类型和基本数据类型;2
输入校验:针对某个方法和针对所有方法,以及手动和基于xml文件进行校验,使用资源文件中的内容3 文件上传,多文件上传4 权限拦截,即拦截器,拦截器栈;5 防止表单重复提交的使用;6 struts2常用标签 :7 多种视图的使用;原样输出,转发,重定向8 类型转换:全局以及局部9 国际化资源文件的使用在一个应用中用到以上所有的知识点。\r\n前奏:导入开发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:'' }{list a as x}
{if !!x}
{if
x.visitorName==visitor.userName}
{else}
{/if}
{if x.moveFrom=='wap'} {elseif
x.moveFrom=='iphone'} {elseif
x.moveFrom=='android'} {elseif
x.moveFrom=='mobile'} {/if}
${fn(x.visitorNickname,8)|escape}{/if} {/list}{if !!a}
${fn(a.nickname,8)|escape}
${a.selfIntro|escape}{if
great260}${suplement}{/if}
{/if}
相关文章推荐
- Struts2.3.7技术的汇总之三(类型…
- Struts2.3.7技术的汇总之二(注册…
- 黑马程序员--Struts2的常量
- 黑马程序员--Struts2复习笔记
- JDK1.5并发库笔记和总结
- Java一些实用的类(持续更新)
- Java多线程基础知识回顾与总结;
- Java基础笔记的复习与整理---Socke…
- Java基础笔记的复习与整理--集合框…
- JDK1.5新特性回顾
- 在学习Java高级应用中碰到的一些问…
- 黑马程序员--Spring框架方方面面之…
- Java开发两种Tree实现
- Spring MVC拦截器+注解方式实现防止表单重复提交
- 异常管理 - 采用模板方法优化try-catch-finally
- java document对象详解
- java知识点之静态导入
- Spring Boot——开发新一代Spring应用
- Spring MVC jsp 嵌入子页面的两种方式
- mybatis+spring+struts2框架整合