码迷,mamicode.com
首页 > 其他好文 > 详细

初学struts小总结

时间:2015-03-17 18:11:46      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:小新手struts2

Struts配置
1.软件下载:
 
 
2.前期工作
 
 
3.具体操作
A.将需要的jar文件复制到web项目中webroot下的lib文件夹中
Jar文件所在:
Apps----->struts2-blank------>web-inf---->lib
B.配置web.xml 和struts.xml
配置struts.xml
1.将struts.xml复制到项目中src目录下
Struts.xml位置:
将struts-2.x.x中的apps打开------》解压struts2-blank----》打开web-inf文件-----》classes------》找到struts.xml,如下图
 
2.注释掉struts.xml的多余内容,将package标签的内容复制下来,将package中内容更改如下:
 
(
注意:
A.namespace的作用:与在浏览器中访问的路径一一对应
 
总结为:http://localhost:8080/web项目名称/struts.xml中的action name
B.若在项目src中建立一个包package,则在struts.xml中配置package name=“包名”
)
配置web.xml
1.web.xml位置
将struts-2.x.x中的apps打开------》解压struts2-blank----》打开web-inf文件-----》web.xml
2.将这其中的在<filter>中复制过来,如下图
<filter>
        <filter-name>struts2</filter-name>
        <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>
 
Action流程
<form action=”*.action”>路径映射到web.xml
 
中的url-pattern,然后在上面的filter中的*andexcute*进行过滤查找,即在struts.xml中查找action,由属性class进行流程,然后运用方法,写result name,必须要匹配,然后流程进入结果页面。
 
Package讲解
<struts>可以有多个Package</struts>
<Package>可以有多个action</Package>
 
上述的name可以任意取名,extends必须有
查看源代码的方法:
任意打开一个class文件,点击
 
然后选择文件夹:
 
 
 
 
 
 
 
Struts2.3 api Doc
1.准备阶段
                新建java项目----》将E:\struct\struts-2.3.20\src\core\src\main\java下的org文件copy到src下----》将E:\struct\struts-2.3.20\lib中的jar文件(除了struts-core-*.jar)+E:apache-tomcat-6.0.10\lib中的jsp.api和servlet.jsp
2.生成工作
首先在桌面上创建一个文件夹struts—doc,然后选中项目进行下面操作。
 
等待生成。。。。。
Struts在启动时有3个文件需要解析:
内置文件: Parsing configuration file [struts-default.xml]
插件文件: Parsing configuration file [struts-plugin.xml]
自己配置的文件: Parsing configuration file [struts.xml]
类型转换
Struts2可以自动的进行类型转换方式,但并不能满足要求。
 
在写action方法时,需要从actionsupport继承,如下图
 
 
需要写转换器:
  另外建立一个包,需要继承**,如下图
转换器内容自己写入:如下
 
toType:表示传向的方向
Value:表示所传的值
 
创建属性文件:
在与action类的同一个包中,建file,其中名字必须如下图:
 
即:*action名-conversion.properties
然后打开此属性文件,点击source,写入,如下图
 
User是所对应的action中的类
后面的是转换器的包
 
流程:
用户提交
寻找action,实例化对象class
通过属性文件,知道先进行类型转换,生成某一类型转换对象
自动调用方法转换器,返回的user到useraction
 
类型转换:
 
 
输入校验剖析:(分两种)
 
Addactionerror实现流程:
 
Addfielderror实现流程:
 
第一种:编码方式:
 
 
action级别的处理错误信息
 
1.Action继承actionsupport,所以可以进行校验,提供Validate()方法
2.先执行validate(验证),在execute()
 
3.进行校验时,只写不符合满足要求的代码
 
4.在validate方法中进行验证,验证的方法用addactionerror(“提示信息”)
if(username == null || username.length() < 4 || username.length() > 6) 
{

this.addActionError("username error!!");
}
5.在struts.xml中配置验证错误相对应的result,即
<result name=”input”>/*.jsp</result>
6.要想要提示信息显示在页面上,需要在jsp页面里面加入struts标签库,
<s:actionerror/>
field级别错误消息
步骤和上述方法不同的是:
1.将this.actionerror()方法改写为:
this.addFieldError("username", "name field!!!");
即this.addFieldError("验证名", "提示信息");
2.要使信息提示显示出来,则需要在显示页面添加另外一个标签:
   <s:fielderror cssStyle="blue"></s:fielderror>
 
两种级别比较:
1.存放的位置不一样(addactionerror,fielderror)
2.呈现的方式不一样(标签)
 
总结:
(1.类型转换出现错误时,错误提示会保存到field级别,而不是action级别,并且Struts有自带的field错误提示
(2.Field级别提示信息可以手动或者是自动提供
(3.Clear不可以清除action和field错误,仍有提示信息即
this.getFieldErrors().clear();
this.getActionErrors().clear();因为返回的是集合的副本
(4.clear**error可以清除错误,并且没有提示信息:
this.clearActionErrors();
this.clearFieldErrors();
 
 
 
Struts标签:
1.用struts标签必须要写的:
 
2.输出的意思:<s:property>
 
 
3.Action级别验证时出现错误且有信息提示:
 
也可以增加提示颜色:
 <s:actionerror cssStyle="color:red"/>
4.field级别验证时出现错误时,有信息提示:
  <s:fielderror cssStyle="color:blue"></s:fielderror>
5.表单:<s:form></s:form>
Action表示找的流程,theme的作用是用户自定义表单用途的
 
 6.输入文本域,其中name=”文本框输入的内容” label=”注释”
<s:textfield name="username" label="username"></s:textfield>
即:username:
7.输入密码时,其中name,label属性同上
<s:password name="password" label="password"></s:password>
8.提交按钮时,
<s:submit value="submit"></s:submit>
*注意:
1.如果方法中是自己定义的,则需要在struts.xml中的action的属性后加入一个method=”方法名”
2.用struts标签进行页面提交时,后台会自动的在处理field错误信息,即重复提示field错误信息。即:
 
若要消去重复的提示,则可以如下:
<s:form action="register.action" theme="simple">

username:<s:textfield name="username" label="username"></s:textfield><br>
password:<s:password name="password" label="password"></s:password><br>
repassword:<s:password name="repassword" label="repassword"></s:password><br>
age:<s:textfield name="age" label="age"></s:textfield><br>
birthday:<s:textfield name="birthday" label="birthday"></s:textfield><br>
graduation:<s:textfield name="graduation" label="graduation"></s:textfield><br>

<s:submit value="submit"></s:submit>

</s:form >
3.先执行型转换,在执行输入校验,两者息息相关
4.类型转换出现错误时,错误提示会保存到field级别,而不是action级别,并且Struts有自带的field错误提示。
 
 
 
 
错误剖析:
 
 
404:”result input”输入校验出错,会寻找struts.xml中的result中name=”input”,如下图:
 
 
代码收集:
比较两个日期谁前谁后时,采用一下代码:
if(birthday != null && graduation != null) {

Calendar c1 = Calendar.getInstance();
c1.setTime(birthday);

Calendar c2 = Calendar.getInstance();
c2.setTime(graduation);

//比较c1 c2哪个在前面
if(!c1.before(c2)) {

this.addActionError("birthdate is later!!");

}
比较密码和重输入密码时,采纳:
//验证密码在4-6之间,先判断长度是否相同,在判断内容是否相同

if(password == null || password.length() < 4 || password.length() > 6) {

this.addActionError("password error!!");

}else if(repassword == null || repassword.length() < 4 || repassword.length() > 6) {

this.addActionError("repassword error!!");

}else if(!password.equals(repassword)) {

this.addActionError("repassword no same password!!");

}


本文出自 “wjy1” 博客,转载请与作者联系!

初学struts小总结

标签:小新手struts2

原文地址:http://9993849.blog.51cto.com/9983849/1621546

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!