黑马程序员--Struts2.3.7技术的汇…

--------android培训java培训期待与您交流------

 需求:定义一个用户注册系统:

复习Struts2的所有知识点:
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.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中存储一个 记。
文件上 页面类似的思路;

黑马程序员--Struts2.3.7技术的汇总 - 蓦然回首*小强 - 蓦然回首*小强
 

 

这是整个程序的架构,下面分别对每个模块进行分析解释;

<script type="text/javascript" id="wumiiRelatedItems"> </script>
 
阅读(0) | 评论(0)
推荐 转载
历史上的今天
最近读者
热度
在LOFTER的更多文章
评论

--------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:'' }
{if x.visitorName==visitor.userName} ${x.visitorNickname|escape} {else} ${x.visitorNickname|escape} {/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}
${a.selfIntro|escape}{if great260}${suplement}{/if}
 
{/if}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值