- 浏览: 1525080 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
还是通过一些步骤例子说明
首先建立Struts工程的时候要启动验证框架。
它称为Validator验证框架
主要依赖与两个.jar文件
Jakarta-oro.jar
Commons-validator.jar
这个是在struts-config.xml文件中如下加入配置之后即代表该工程已经使用验证框架的插件了
- <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
- <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
- /WEB-INF/validation.xml"/>
- </plug-in>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/> </plug-in>
完成好了之后以注册的例子说明它的主要使用方法
1.建立一个注册的页面;包含用户名: 密码: 年龄: 邮箱:都不能为空。密码长度必须大于或等于8位,邮箱格式验证等
显示方式一:使用错误消息显示在相应的控件后面。
2.建立注册页相对应的表单Bean(ActionForm),重点在这里,因为要使用验证框架的话该表单类需要修改
1)修改该类的继承
- import org.apache.struts.validator.ValidatorForm;// 导入要继承的类
- public class 表单类 extends ValidatorForm //修改继承类
import org.apache.struts.validator.ValidatorForm;// 导入要继承的类 public class 表单类 extends ValidatorForm //修改继承类
2) //修改该类且不包含validate()方法.
3、在validation.xml 中配置验证规则
这个验证规则依赖与validator-rules.xml此文件已经配置好的验证类
大概介绍几种规则吧{}中的为参数
errors.required={0} is required. 必须的,或者不能为空的
errors.minlength={0} can not be less than {1} characters. {某某}不能小于{多少}位
errors.maxlength={0} can not be greater than {1} characters.{ 某某}不能大于{多少}位
errors.range={0} is not in the range {1} through {2}.{0}是不能在{1}与{2}之间
- <form-validation> <!--以下是配置一些常用的验证规则 -->
- <formset>
- <form name="regActionForm">
- <!--表单名,为验证哪个表单而配置,这里的name指定struts中form-bean的别名 -->
- <field property="username" depends="required">
- <arg0 key="tip.username"/>
- </field> arg0指要为该规则传入的第一个参数
- <!--property为表单中的属性,depends为要验证的规则key为消息资料文件中的配置键 -->
- <!-- 验证密码最小长度不小于8位 要一个控件属性验证两个规则的话真正以逗号分开, -->
- <field property="userpass" depends="required,minlength">
- <arg0 key="tip.userpass"/>
- <arg1 key="${var:minlength}" name="minlength" resource="false"/>
- <var>
- <var-name>minlength</var-name>
- <var-value>8</var-value>
- </var>
- </field>
- <!--绿色的为变量名,好像定义也有规则,必须是那样而resource 则是配置是否从资源文件中查找key -->
- <field property="email" depends="required,email">
- <arg0 key="tip.email"/>
- </field>
- <!-- 验证年龄在一定范围之内 -->
- <field property="age" depends="required,intRange">
- <arg0 key="tip.age"/>
- <arg1 key="${var:min}" name="intRange" resource="false"/>
- <arg2 key="${var:max}" name="intRange" resource="false"/>
- <var>
- <var-name>min</var-name>
- <var-value>1</var-value>
- </var>
- <var>
- <var-name>max</var-name>
- <var-value>100</var-value>
- </var>
- </field>
- </form>
- </formset>
- </form-validation>
<form-validation> <!--以下是配置一些常用的验证规则 --> <formset> <form name="regActionForm"> <!--表单名,为验证哪个表单而配置,这里的name指定struts中form-bean的别名 --> <field property="username" depends="required"> <arg0 key="tip.username"/> </field> arg0指要为该规则传入的第一个参数 <!--property为表单中的属性,depends为要验证的规则key为消息资料文件中的配置键 --> <!-- 验证密码最小长度不小于8位 要一个控件属性验证两个规则的话真正以逗号分开, --> <field property="userpass" depends="required,minlength"> <arg0 key="tip.userpass"/> <arg1 key="${var:minlength}" name="minlength" resource="false"/> <var> <var-name>minlength</var-name> <var-value>8</var-value> </var> </field> <!--绿色的为变量名,好像定义也有规则,必须是那样而resource 则是配置是否从资源文件中查找key --> <field property="email" depends="required,email"> <arg0 key="tip.email"/> </field> <!-- 验证年龄在一定范围之内 --> <field property="age" depends="required,intRange"> <arg0 key="tip.age"/> <arg1 key="${var:min}" name="intRange" resource="false"/> <arg2 key="${var:max}" name="intRange" resource="false"/> <var> <var-name>min</var-name> <var-value>1</var-value> </var> <var> <var-name>max</var-name> <var-value>100</var-value> </var> </field> </form> </formset> </form-validation>
4、编写消息资源文件
验证规则的配置文件中所用key的名字为该资源文件所配置
- # errors.required={0}不能为空.
- # tip.username=用户名
- # tip.userpass=密码
- # errors.minlength={0}不能少于{1}个字符.
- # errors.email={0} 格式不合法.
- # tip.email=邮箱
- # tip.age=年龄
- # errors.range={0} 必须在 {1} - {2} 之间.
- errors.required={0}\u4e0d\u80fd\u4e3a\u7a7a.
- tip.username=\u7528\u6237\u540d
- tip.userpass=\u5bc6\u7801
- errors.minlength={0}\u4e0d\u80fd\u5c11\u4e8e{1}\u4e2a\u5b57\u7b26.
- errors.email={0} \u683c\u5f0f\u4e0d\u5408\u6cd5.
- tip.email=\u90ae\u7bb1
- tip.age=\u5e74\u9f84
- errors.range={0} \u5fc5\u987b\u5728 {1} - {2} \u4e4b\u95f4.
# errors.required={0}不能为空. # tip.username=用户名 # tip.userpass=密码 # errors.minlength={0}不能少于{1}个字符. # errors.email={0} 格式不合法. # tip.email=邮箱 # tip.age=年龄 # errors.range={0} 必须在 {1} - {2} 之间. errors.required={0}\u4e0d\u80fd\u4e3a\u7a7a. tip.username=\u7528\u6237\u540d tip.userpass=\u5bc6\u7801 errors.minlength={0}\u4e0d\u80fd\u5c11\u4e8e{1}\u4e2a\u5b57\u7b26. errors.email={0} \u683c\u5f0f\u4e0d\u5408\u6cd5. tip.email=\u90ae\u7bb1 tip.age=\u5e74\u9f84 errors.range={0} \u5fc5\u987b\u5728 {1} - {2} \u4e4b\u95f4.
5.在struts-config.xml中配置Action验证失败跳转页面,属性为input指向的地方
二、手工验证;
1、用户名、密码不能为空;
2、密码长度不能小于8位;
(1)验证代码写在哪儿?
ActionForm的validate()方法中,如果该方法返回的ActionErrors中没有包含错误消息,认为验证通过。
(2)错误集合存在哪儿?
由 RequestProcessor 将错误集合存储在 Request 中,键名为
Globas.ERROR_KEY;
(3)如何显示错误消息?
- <html:errors/> <!--显示所有消息 -->
- <html:errors property="xx"/> <!--显示指定的消息-->
<html:errors/> <!--显示所有消息 --> <html:errors property="xx"/> <!--显示指定的消息-->
三、生成JavaScript
(1)ActionForm继承 org.apache.struts.validator.ValidatorForm;
(2)ActionForm中无 validate() 方法;
(3)表单JSP页中加:
<html:form .... onsubmit="return validateRegForm(this);">颜色字体一致,首字母大写
<html:javascript formName="regForm"/>
(4)在validation.xml中配置验证规则;
另外再说一个不怎么常用的标签,它的作用一般就是方便表单Bean对象的重复代码
- <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
- <h1>用户注册</h1>
- <html:form action="reg.do" method="post">
- <nested:nest property="user">
- 用户名:<nested:text property="username"/><br/>
- 密码:<nested:text property="userpass"/><br/>
- </nested:nest>
- <html:submit value="提交"/>
- </html:form>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> <h1>用户注册</h1> <html:form action="reg.do" method="post"> <nested:nest property="user"> 用户名:<nested:text property="username"/><br/> 密码:<nested:text property="userpass"/><br/> </nested:nest> <html:submit value="提交"/> </html:form>
要使用该配置,在ActionForm中要实例化一个user对象才可以通过以上配置使用对象中username的属性
- <hr>
- <h1>用户注册</h1>
- <html:form action="reg.do" method="post">
- 用户名:<html:text property="user.username"/><br/>
- 密码:<html:text property="user.userpass"/><br/>
- <html:submit value="提交"/>
- </html:form>
<hr> <h1>用户注册</h1> <html:form action="reg.do" method="post"> 用户名:<html:text property="user.username"/><br/> 密码:<html:text property="user.userpass"/><br/> <html:submit value="提交"/> </html:form>
上面的代码也可以实现刚才的功能,但是在验证框架中就不能那么使用了
Tiles标签
- <tiles:insert page="header.jsp" flush="true"/><!--标头内容 -->
<tiles:insert page="header.jsp" flush="true"/><!--标头内容 -->
作用与嵌套网页,可以定制好一个模板,然后在模板中使用相应的可编辑内容
- <h1>t1.jsp</h1>
- 111111111111111
- <hr>
- <!--page表示所要插入的网页,flush是否及时更新 -->
- <tiles:insert page="footer.jsp" flush="true"/><!--末尾内容 -->
<h1>t1.jsp</h1> 111111111111111 <hr> <!--page表示所要插入的网页,flush是否及时更新 --> <tiles:insert page="footer.jsp" flush="true"/><!--末尾内容 -->
第二种情况是以一个定制了的模板生成个新的网页
- <tiles:insert attribute="header"/>
- <tiles:insert attribute="footer"/>
- <tiles:insert page="template1.jsp" flush="true"> <!--已经存在一个template1.jsp模板 -->
- <tiles:put name="header" value="header.jsp"/> <!--往属性header设置嵌入页面 -->
- <tiles:put name="footer" value="footer.jsp"/> <!--往属性footer设置嵌入页面 -->
- </tiles:insert>
<tiles:insert attribute="header"/> <tiles:insert attribute="footer"/> <tiles:insert page="template1.jsp" flush="true"> <!--已经存在一个template1.jsp模板 --> <tiles:put name="header" value="header.jsp"/> <!--往属性header设置嵌入页面 --> <tiles:put name="footer" value="footer.jsp"/> <!--往属性footer设置嵌入页面 --> </tiles:insert>
(1)防止重复提交; Action
原理是通过在请求里面加入一些身份标记,在请求的时候判断是否事先存放的标记,如果不是则是第二次非正常提交
- this.saveToken(request); //在第一次点击请求的时候存入然后存转发到另一个JSP页面
- //判断令牌是否有效;
- if(! this.isTokenValid(request) ){ //如果是刚才的页面转发过来的话则它返回真
- saveToken(request);
- return ( new ActionForward(mapping.getInput()) );
- //跳转到Action配置的input中的页面
- }
- //最后正常执行完业务逻辑就把先前存的Token删除
- request.removeAttribute(mapping.getAttribute());
- this.resetToken(request);
this.saveToken(request); //在第一次点击请求的时候存入然后存转发到另一个JSP页面 //判断令牌是否有效; if(! this.isTokenValid(request) ){ //如果是刚才的页面转发过来的话则它返回真 saveToken(request); return ( new ActionForward(mapping.getInput()) ); //跳转到Action配置的input中的页面 } //最后正常执行完业务逻辑就把先前存的Token删除 request.removeAttribute(mapping.getAttribute()); this.resetToken(request);
(2)动态ActionForm(对应的JAVA类是动态产生的,JAVA类中的属性在struts-config.xml文件中动态配置)
1.配置Struts-config.xml中的 <form-bean/>,在其中声明
表单中要包含的字段元素;
----------------------------------------
例如页面上有以下一个表单 ,分别有属性username userage
- <form action="dynaReg.do" method="post">
- username:<input size=10 name="username"><br>
- userage:<input size=10 name="userage"><br>
- <input type="submit" value=" OK ">
- </form>
<form action="dynaReg.do" method="post"> username:<input size=10 name="username"><br> userage:<input size=10 name="userage"><br> <input type="submit" value=" OK "> </form>
那么对应这个表单就要在Struts-config.xml中配置一个与其对应的form-bean
- <form-bean name="dynaRegForm" dynamic="true" type="org.apache.struts.action.DynaActionForm"> <!--指定该bean为动态的,并类型是该类
- 如果使用了动态FORMBEAN也想用验证框架的话这里的TYPE就要指定DynaValidatorActionForm -->
- <form-property name="username" type="java.lang.String"/>
- <form-property name="userage" type="java.lang.Integer" initial="0"/>
- </form-bean>
<form-bean name="dynaRegForm" dynamic="true" type="org.apache.struts.action.DynaActionForm"> <!--指定该bean为动态的,并类型是该类 如果使用了动态FORMBEAN也想用验证框架的话这里的TYPE就要指定DynaValidatorActionForm --> <form-property name="username" type="java.lang.String"/> <form-property name="userage" type="java.lang.Integer" initial="0"/> </form-bean>
----------------------------------------------------
2.配置Struts-config.xml中的 <action/>,将动态ActionForm
与某个Action结合起来;
只要name属性名称一致就可以了
在Action中的业务方法有些改动,因为它自动生成表单bean,所以取值的时候要像这样取,get中填写xml配置中的属性名字,把form强转换成DynaActionForm类对象,使用.get方法,返回Object,所以相应的再强转成想要的类型
String username=(String)((DynaActionForm)form).get("username");
Integer userage=(Integer)((DynaActionForm)form).get("userage");
3.客户使用表单,表单中名称与<form-bean>中声明的相同;
最后在使用完表单bean之后要删除掉刚才生成的bean;方法如下
request.removeAttribute(mapping.getAttribute());//删除FormBean
(3)DispatchAction类,可以在一个Action中编写多个业务方法;
1、编写Action,要继承DispatchAction,且无execute()方法;
2、在Action类中提供多个业务方法;
3、在表单/超链接中生成请求时,用URL: xxxxx.do?method=XX
4、使用该类,可以节省Action的个数;
测试DispatchAction类(一个Action处理多种业务):
加math.do?method=add
减math.do?method=dec
乘math.do?method=mul
在Action类中要写入相应的方法。
- public ActionForward add(ActionMapping mapping,
- ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- System.out.println("add....");
- request.setAttribute( "mathresult","add...." );
- return mapping.findForward( "success" );
- }
public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("add...."); request.setAttribute( "mathresult","add...." ); return mapping.findForward( "success" ); }
其他几个以此类推。。。。。。。。。。。。
(4)一个表单实现多种业务(计算器)----LookupDispatchAction;
LookupDispatchAction(一个表单对应多个处理方法):
1、编写Action,继承LookupDispatchAction类;
2、重写LookupDispatchAction类的getKeyMethodMap(),在该方法内对提交按钮文字“键名”和“业务方法名”进行映射;
- protected Map getKeyMethodMap(){
- Map map=new HashMap();
- map.put("页面显示的按钮","本类中的业务方法名");
- map.put("button.add ","add");
- return map;
- }
protected Map getKeyMethodMap(){ Map map=new HashMap(); map.put("页面显示的按钮","本类中的业务方法名"); map.put("button.add ","add"); return map; }
3、编写业务方法;
- //add
- public ActionForward add(ActionMapping mapping,
- ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception
- {
- int num1 = ((Math2Form) form).getNum1();
- int num2 = ((Math2Form) form).getNum2();
- request.setAttribute( "math2Result", ""+(num1+num2) );
- request.removeAttribute(mapping.getAttribute());
- return (mapping.findForward("success"));
- }
//add public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { int num1 = ((Math2Form) form).getNum1(); int num2 = ((Math2Form) form).getNum2(); request.setAttribute( "math2Result", ""+(num1+num2) ); request.removeAttribute(mapping.getAttribute()); return (mapping.findForward("success")); }
4、表单中的提交按钮中,显示文字时使用
- <bean:message key="xxx"/>
<bean:message key="xxx"/>
5、使用该类,可以出现许多避免重复性表单;(如下为前台表单显示的内容)
- <html:submit property="action">
- <bean:message key="button.add"/>
- </html:submit>
<html:submit property="action"> <bean:message key="button.add"/> </html:submit>
(5)ForwardAction
- <action
- path = "/jsp1"
- type = "org.apache.struts.actions.ForwardAction"
- parameter ="/jsp1.jsp"
- />
- <action
- path = "/jsp1"
- forward="/jsp1.jsp"
- />
<action path = "/jsp1" type = "org.apache.struts.actions.ForwardAction" parameter ="/jsp1.jsp" /> <action path = "/jsp1" forward="/jsp1.jsp" />
发表评论
-
fckedit和struts2集成不能上传文件的解决方法
2010-01-24 10:52 1614以前在使用fckedit+strut1上传文件很顺利,后来使用 ... -
struts validator框架
2010-01-09 13:56 1425Struts 验证器基础 步骤 1. 安装 Strut ... -
The path of an ForwardConfig cannot be null-struts validator验证框架异常
2010-01-09 13:54 3046struts validator验证框架异常 在测 ... -
关于一个Action对应多个Form
2009-12-28 23:49 1505由于一个Action可以用多个path来访问,所以我们可以通过 ... -
一个Action对应多个Form DispatchAction
2009-12-28 23:32 2704一个Action对应多个Form ... -
DynaValidatorForm类
2009-12-28 23:23 1285DynaValidatorForm类 http ... -
Struts出现No getter method for property的解决
2009-12-28 22:48 2007请从一下几方面着手检查代码 1、JavaBean中的属性 ... -
Struts Validator验证器使用指南
2009-12-07 18:34 785Struts Validator 验证器 ... -
Form '***' not found for locale 'zh _CN'
2009-12-07 16:13 4360Form '***' not found for locale ... -
Struts2 拦截器详细配置过程
2009-12-06 21:23 18191:所有拦截器的超级接口Interceptor ,Ac ... -
如何在SSH框架中使用Validator框架
2009-12-05 00:19 1330关键字: validator 下 ... -
java.lang.NoSuchMethodException
2009-12-04 23:56 2047关键字: validator 下面将介绍如何在SSH框架 ... -
Struts-validator验证框架与一些技巧
2009-12-04 23:44 1158这个框架褒贬不一呀~~~ =========== ... -
struts 标签详解
2009-12-04 21:28 1034struts 标签详解 Action和jsp的开发其实就 ... -
HTTP Status 404 - Servlet action is not available(二)
2009-12-04 18:41 5871今天在帮公司的新手弄SSH的一个登录程序时,出现了Servle ... -
HTTP Status 404 - Servlet action is not available(一)
2009-12-04 18:40 7830sp /meCall 发表于2007-10-08, 1 ... -
SSH中Cannot retrieve mapping for action
2009-12-04 18:22 2181<script type="text ... -
Cannot retrieve mapping for action 之 问题解决
2009-12-04 18:21 11335struts的form标 ... -
利用Struts的Validator验证框架实现客户端和服务器端双验证
2009-12-04 18:18 1540... -
struts的parameter功能
2009-12-04 17:32 1071没有struts之前,使用servlet,最常用的是d ...
相关推荐
Struts验证框架,作为Struts框架的一个重要组成部分,...以上介绍了Struts验证框架中的一些核心概念和常见验证规则,这些工具和技巧能够帮助开发者有效地管理和控制用户输入,从而构建更加安全和用户友好的Web应用。
通过阅读提供的"15_学员用书_STRUTS2核心_IMAGE版.pdf",你可以逐步掌握这些概念和实践技巧,从而在实际项目中有效地利用Struts2框架。同时,配合源码学习,能让你更直观地了解框架的工作原理,加深理解,提高编程...
本套讲义和笔记资料涵盖了Struts2框架的基础到高级应用,旨在帮助开发者全面掌握这一框架的使用技巧。 在Day01的学习中,通常会介绍Struts2的基本概念和历史背景,包括其与前一代Struts1的区别。Struts2的核心组件...
Struts 2是一个强大的、基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在原有的Struts 1的基础上进行了大量的改进和增强,提供了更灵活、高效的开发方式。AJAX(Asynchronous JavaScript and ...
Struts框架是Java Web开发中的一种经典MVC(Model-View-Controller)框架,由Apache软件基金会维护。这篇“基于Struts框架的网上书店毕业论文”可能深入探讨了如何使用Struts来构建一个完整的在线图书销售系统。以下...
《Struts Web设计与开发大全》这本书显然是针对这个主题提供全面深入的指导,涵盖了从基础概念到高级技巧的各个方面。 在Struts框架中,关键组件包括ActionServlet、ActionForm、Action、Tiles等。ActionServlet是...
本次实验旨在通过实践操作,使学生能够深入了解并掌握Struts2框架的核心概念与应用技巧。具体目标如下: 1. **掌握Struts2框架的工作原理及流程**:理解Struts2如何处理请求和响应,以及其中各组件的作用。 2. **...
- **Demo**:这部分通常包含了一些示例应用,用于演示Struts 2的基本用法和功能,包括Action、Result、Interceptor等组件的使用,以及如何配置Struts 2的XML配置文件。 - **Doc**:文档部分可能包括用户手册、API...
Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、易于管理的企业级应用程序。在四天的学习中,你可能会深入理解其核心概念、架构、配置以及如何将其应用于实际项目中。以下是对Struts2关键知识点的...
通过以上步骤,你不仅完成了Struts框架的安装,还实践了一个用户注册系统的搭建,掌握了Struts框架的基本使用技巧。这不仅加深了对MVC架构的理解,也为后续开发复杂的企业级应用打下了坚实的基础。
Struts2还可以与Hibernate Validator框架集成,利用其丰富的验证注解和更强大的验证功能。只需添加相应的依赖,并在配置中启用,即可在Struts2中使用Hibernate Validator的全部功能。 八、WebRoot目录和src目录 在...
这份IBM软件中级工程师培训课件PPT,无疑是一个宝贵的自学或教学材料,涵盖了Struts框架的核心概念、应用场景以及实践技巧。 首先,Struts框架的主要作用是帮助开发者构建结构清晰、易于维护的Web应用。它通过分离...
Struts框架是一个经典的Java Web开发框架,主要用于构建MVC(Model-View-Controller)架构的应用程序。这个"Struts框架基本功能例子"着重展示了...对于学习和理解Struts框架的实用技巧,这是一个非常有价值的实践案例。
### Struts2框架搭建及配置详解 #### 一、Struts2框架简介 Struts2是Struts的一个改进版本,它结合了WebWork框架和Struts框架的优点,并且增加了许多新特性,使得开发者能够更加方便地开发Java Web应用程序。...
在本资料中,你将深入学习到关于Struts框架的基础知识、入门技巧、详细解析以及国际化和数据验证的实践方法。 首先,让我们从Java Web编程基础开始。在Java Web开发中,你需要理解Servlet、JSP(JavaServer Pages)...
3. `ActionMapping`:在struts-config.xml中定义Action类与URL的映射,当用户请求特定URL时,Struts会调用对应的Action处理。 4. `JSP页面`:用户界面,通常包括登录表单(login.jsp)和显示结果的页面(success.jsp...
6章 Struts之数据校验与GJ化 7章 详解Struts之标签库 8章 Struts之拦截器使用技巧 9章 在Struts中应用Ajax技术 10章 Struts之项目实战 3篇 持久层框架Hibernate技术 11章 Hibernate快速上手 12章 精解...
Struts2是一个强大的Java Web应用程序开发框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建高效、可扩展且易维护的Web应用的解决方案。本篇文章将深入探讨Struts2的核心概念、关键特性以及...