- 浏览: 72389 次
- 性别:
- 来自: 惠州
文章分类
最新评论
-
woyaonuli:
各位大侠,请教下,怎么让生成的pdf每页都有背景图片, ...
iText 跨行and背景图片 -
lixia0417:
恩,LZ,谢谢了,那我还是练习把SSh的例子改成S2sh的吧, ...
struts2+hibernate3+spring2读书笔记4(数据校验器) -
hhr_michael:
哥们,你好,这本书着重s2sh的各个部分开发,而整合的例子不是 ...
struts2+hibernate3+spring2读书笔记4(数据校验器) -
lixia0417:
对,哥们,问一下,这本书中关于S2SH整合开发的例子多吗,就是 ...
struts2+hibernate3+spring2读书笔记4(数据校验器) -
hhr_michael:
谢谢提醒,由于只是着重校验的过程,所以这代码没有在struts ...
struts2+hibernate3+spring2读书笔记4(数据校验器)
最近买了谢星星(阿蜜果)的企业应用架构设计-Struts2+Hibernate3+Spring2,想更好地学习与管理资料,现在在博客上写读书笔记,呵呵!
第5章 数据校验器
一.使用重写validate()方法进行手动校验
实例需求:Struts2中可通过在Action中重写ActionSupport类的validate()方法来完成Action中各方法的难证。
1. 建立工程(可参考前几章的建立,方法类似,需在web.xml文件中配置Struts2的FilterDispatcher)
2. 编写用户信息的pojo类:User.java 代码如下:
3. 编写注册的Action:RegAction.java 代码如下:
二.使用重写validateXxx()方法进行手动校验(这个例子主要是实现在同一个action中实现不同的验证方法)
1. 编写用户信息的Action: UserAction.java 具体代码如下:
2. 编写注册页面: validateXxxReg.jsp 具体代码如下:
以上四步后,就完成了重写validateXxx()方法进行手动校验了!呵呵!下面我们再来看看Struts2的验证框架。
三.使用Struts2的验证框架完成服务端校验
1.编写Action类:ValjFrameworkRegAction.java
2.编写验证文件: ValFrameworkRegAction-validsation.xml
Struts 2 中的每个Action都可以有一个验证文件,该验证文件与Action处于同目录中,命名格式为:Action的名称-validation.xml,其中“-validation.xml”是确定的,而“Action的名称”会根椐不同的Action而有所不同,本实例的验证文件的名称为:ValFrameworkRegAction-validsation.xml 具体内容如下:
4.配置struts.xml,添加的信息如下:
四.使用Struts2的验证框架完成客户端校验
在Strut2中,进行客户端校验将由框架在页面中自动生成javascript代码,在提交时调用自动生成的javascript代码中的函数:validateForm_Action 名称(),要实现客户端校验比较简单,只要在jsp页面的form的validate属性设为true就可以了。如下:
五.国际化校验的提示信息
主要是实现验证信息的国际化:步骤如下:
1. 在src目录中创建校验提示信息的配置文件
2.修改struts.xml文件
在struts的头部添加如下代码(注是在struts的标签内添加):
以上三步后,就完成了国际化的验证校验了!
六.常用内建的较验器
1. 必填字符串校验器requiredstring
filedName:用于非字段校验器,指定需要验证的属性名。
Min: 可选参数,用于指定整数最小值
Max:可选参数,用于指定最大值。
Fieldname:非字段校验器具有该属性,指定Action属必名。
Expression:必填,指定正则表达式
caseSensitive:非必填,指定是否区分大小写,默认为true.
4.必填校验器
5.字符串度度校验器
6.日期校验器
8.邮件地址校验器
第5章 数据校验器
一.使用重写validate()方法进行手动校验
实例需求:Struts2中可通过在Action中重写ActionSupport类的validate()方法来完成Action中各方法的难证。
1. 建立工程(可参考前几章的建立,方法类似,需在web.xml文件中配置Struts2的FilterDispatcher)
2. 编写用户信息的pojo类:User.java 代码如下:
package amigo.struts.validation; import java.util.Date; /* * 用户信息的pojo类 * */ public class User { /**用户名*/ private String username; /**密码*/ private String password; /**性别*/ private int gender; /**年龄*/ private int age; /**生日*/ private Date birthDate; /**联系电话*/ private String tel; /**Email*/ private String email; /**个人首页*/ private String url; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } }
3. 编写注册的Action:RegAction.java 代码如下:
package amigo.struts.validation; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionSupport; /* * 使用validate()完成注册验证 * */ public class RegAction extends ActionSupport implements ServletRequestAware { private User user; private HttpServletRequest request; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public HttpServletRequest getServletRequest() { return request; } public void setServletRequest(HttpServletRequest request) { this.request = request; } /* * 重写validate()方法实现验证 * */ public void validate(){ //非空验证与输入合法验证 if(user.getUsername()==null||"".equals(user.getUsername().trim())){ this.addFieldError("user.username","用户名不能为空"); }else if(user.getUsername()!=null&&!Pattern.matches("\\w{5,50}",user.getUsername().trim())){ this.addFieldError("user.username","用户名输入不合法,必须为长度为5-50的字母或数字"); } if(user.getPassword()==null||"".equals(user.getPassword().trim())) { this.addFieldError("user.password","密码不能为空"); }else if(user.getPassword()!=null&&!Pattern.matches("\\w{5,50}", user.getPassword().trim())){ this.addFieldError("user.password","密码输入不合法,必须为长度为5-50的字母或数字"); } if(user.getAge()<0||user.getAge()>130){ this.addFieldError("user.age","年龄不合法"); } } public String execute(){ return null; } }4.编写注册页面:reg.jsp 代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>用户注册</title> </head> <body> <s:form action="reg"> <s:textfield name="user.username" label="用户名"/> <s:password name="user.password" label="密码"></s:password> <s:select label="性别" name="user.gender" list="#{'1':'男','0':'女'}" listKey="key" listValue="value" value="0"/> <s:textfield name="user.age" label="年龄"></s:textfield> <s:textfield name="user.birthDate" label="出生日期"></s:textfield> <s:textfield name="user.tel" label="联系电话"></s:textfield> <s:textfield name="user.email" label="Email"></s:textfield> <s:textfield name="user.url" label="个人首页"></s:textfield> <s:submit value="提交"></s:submit> </s:form> </body> </html>5.配置struts.xml文件 代码如下:
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml"/> <package name="amigo" extends="struts-default"> <action name="reg" class="amigo.struts.validation.RegAction"> <result name="input">/validation/reg.jsp</result> </action> </package> </struts>以上五步后,就完成了重写validate()方法进行手动校验了!呵呵!
二.使用重写validateXxx()方法进行手动校验(这个例子主要是实现在同一个action中实现不同的验证方法)
1. 编写用户信息的Action: UserAction.java 具体代码如下:
package amigo.struts.validation; import java.util.regex.Pattern; import com.opensymphony.xwork2.ActionSupport; /** * 使用validateXxx()方法完成注册验证 * */ public class UserAction extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } /** * 验证用户信息注册表单 * */ public void validateReg(){ //非空验证与输入合法验证 if(user.getUsername()==null||"".equals(user.getUsername().trim())){ this.addFieldError("user.username","用户名不能为空"); }else if(user.getUsername()!=null&&!Pattern.matches("\\w{5,50}",user.getUsername().trim())){ this.addFieldError("user.username","用户名输入不合法,必须为长度为5-50的字母或数字"); } if(user.getPassword()==null||"".equals(user.getPassword().trim())) { this.addFieldError("user.password","密码不能为空"); }else if(user.getPassword()!=null&&!Pattern.matches("\\w{5,50}", user.getPassword().trim())){ this.addFieldError("user.password","密码输入不合法,必须为长度为5-50的字母或数字"); } if(user.getAge()<0||user.getAge()>130){ this.addFieldError("user.age","年龄不合法"); } } public void validateLogin(){ //非空验证与输入合法验证 if(user.getUsername()==null||"".equals(user.getUsername().trim())){ this.addFieldError("user.username", "用户名不能为空!"); } if(user.getPassword()==null||"".equals(user.getPassword().trim())){ this.addFieldError("user.password", "密码不能为空!"); } } /** * 用户完成注册 * */ public String reg(){ //实现代码省略 return null; } public String login(){ //实现代码省略 return null; } public String execute(){ return null; } }
2. 编写注册页面: validateXxxReg.jsp 具体代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>用户注册</title> </head> <body> <s:form action="userReg"> <s:textfield name="user.username" label="用户名"/> <s:password name="user.password" label="密码"></s:password> <s:select label="性别" name="user.gender" list="#{'1':'男','0':'女'}" listKey="key" listValue="value" value="0"/> <s:textfield name="user.age" label="年龄"></s:textfield> <s:textfield name="user.birthDate" label="出生日期"></s:textfield> <s:textfield name="user.tel" label="联系电话"></s:textfield> <s:textfield name="user.email" label="Email"></s:textfield> <s:textfield name="user.url" label="个人首页"></s:textfield> <s:submit value="提交"></s:submit> </s:form> </body> </html>3. 编写登录页面:validateXxxLogin.jsp 具体代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>用户登录</title> </head> <body> <s:form action="userLogin"> <s:textfield name="user.username" label="用户名:"></s:textfield> <s:password name="user.password" label="密码:"></s:password> <s:submit></s:submit> </s:form> </body> </html>4. 配置 sturts.xml
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml"/> <package name="amigo" extends="struts-default"> <action name="reg" class="amigo.struts.validation.RegAction"> <result name="input">/validation/reg.jsp</result> </action> <action name="userReg" class="amigo.struts.validation.UserAction" method="reg"> <result name="input">/validation/validateXxxReg.jsp</result> </action> <action name="userLogin" class="amigo.struts.validation.UserAction" method="login"> <result name="input">/validation/validateXxxLogin.jsp</result> </action> </package> </struts>
以上四步后,就完成了重写validateXxx()方法进行手动校验了!呵呵!下面我们再来看看Struts2的验证框架。
三.使用Struts2的验证框架完成服务端校验
1.编写Action类:ValjFrameworkRegAction.java
package amigo.struts.validation; import com.opensymphony.xwork2.ActionSupport; /** * 使用Struts2的验证框架完成数据校验 * */ public class ValFrameworkRegAction extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String execute(){ return null; } }
2.编写验证文件: ValFrameworkRegAction-validsation.xml
Struts 2 中的每个Action都可以有一个验证文件,该验证文件与Action处于同目录中,命名格式为:Action的名称-validation.xml,其中“-validation.xml”是确定的,而“Action的名称”会根椐不同的Action而有所不同,本实例的验证文件的名称为:ValFrameworkRegAction-validsation.xml 具体内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="user.username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空</message> </field-validator> <field-validator type="regex"> <param name="expression"><![CDATA[(\w{5,50})]]></param> <message>用户名输入不合法,必须为长度为5-50之间的字母或数字</message> </field-validator> </field> <field name="user.password"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>密码不能为空</message> </field-validator> <field-validator type="regex"> <param name="expression"><![CDATA[(\w{5,50})]]></param> <message>密码输入不合法,必须为长度为5-50之间的字母或数字</message> </field-validator> </field> <field name="user.age"> <field-validator type="int"> <param name="min">1</param> <param name="max">130</param> <message>年龄输入不合法</message> </field-validator> </field> </validators>3. 编写注册页面:valFrameworkReg.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>用户注册</title> </head> <body> <s:form action="valFrameworkReg" > <s:textfield name="user.username" label="用户名"/> <s:password name="user.password" label="密码"></s:password> <s:select label="性别" name="user.gender" list="#{'1':'男','0':'女'}" listKey="key" listValue="value" value="0"/> <s:textfield name="user.age" label="年龄"></s:textfield> <s:textfield name="user.birthDate" label="出生日期"></s:textfield> <s:textfield name="user.tel" label="联系电话"></s:textfield> <s:textfield name="user.email" label="Email"></s:textfield> <s:textfield name="user.url" label="个人首页"></s:textfield> <s:submit value="提交"></s:submit> </s:form> </body> </html>
4.配置struts.xml,添加的信息如下:
<action name="valFrameworkReg" class="amigo.struts.validation.ValFrameworkRegAction"> <result name="input">/validation/valFrameworkReg.jsp</result> </action>以上四步后,就完成了Struts2的验证框架服务端的校验了!呵呵!下面我们再来看看客户端的校验。
四.使用Struts2的验证框架完成客户端校验
在Strut2中,进行客户端校验将由框架在页面中自动生成javascript代码,在提交时调用自动生成的javascript代码中的函数:validateForm_Action 名称(),要实现客户端校验比较简单,只要在jsp页面的form的validate属性设为true就可以了。如下:
<s:form action=”valFrameworkReg” validate=”true”></s:form>
五.国际化校验的提示信息
主要是实现验证信息的国际化:步骤如下:
1. 在src目录中创建校验提示信息的配置文件
validationMessages.properties user.username.requried=用户名不能为空 user.username.regex=用户名输入不合法,必须为长度为5-50之间的字母或数字 user.password.requried=密码不能为空 user.password.regex=密码输入不合法,必须为长度为5-50之间的字母或数字 user.age=年龄必须在${min}和${max}}之间! validationMessages_zh_CN.properties user.username.requried=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a user.username.regex=\u7528\u6237\u540d\u8f93\u5165\u4e0d\u5408\u6cd5\uff0c\u5fc5\u987b\u4e3a\u957f\u5ea6\u4e3a5-50\u4e4b\u95f4\u7684\u5b57\u6bcd\u6216\u6570\u5b57 user.password.requried=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a user.password.regex=\u5bc6\u7801\u8f93\u5165\u4e0d\u5408\u6cd5\uff0c\u5fc5\u987b\u4e3a\u957f\u5ea6\u4e3a5-50\u4e4b\u95f4\u7684\u5b57\u6bcd\u6216\u6570\u5b57 user.age=\u5e74\u9f84\u5fc5\u987b\u5728${min}\u548c${max}}\u4e4b\u95f4\uff01
2.修改struts.xml文件
在struts的头部添加如下代码(注是在struts的标签内添加):
<constant name="struts.custom.i18n.resources" value="validationMessages"></constant> <constant name="struts.i18n.encoding" value="UTF-8"></constant>3. 修改校验文件 valFrameworkRegAction-validation.xml 内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="user.username"> <field-validator type="requiredstring"> <param name="trim">true</param> <!--用了国际化,user.username.requried的内容是:用户名不能为空 --> <message>${getText("user.username.requried")}</message> </field-validator> <field-validator type="regex"> <param name="expression"><![CDATA[(\w{5,50})]]></param> <!--用了国际化,user.username.regex内容是:用户名输入不合法,必须为长度为5-50之间的字母或数字 --> <message>${getText("user.username.regex")}</message> </field-validator> </field> <field name="user.password"> <field-validator type="requiredstring"> <param name="trim">true</param> <!--用了国际化,user.password.requried的内容是:密码不能为空 --> <message>${getText("user.password.requried")}</message> </field-validator> <field-validator type="regex"> <param name="expression"><![CDATA[(\w{5,50})]]></param> <!--用了国际化,user.password.regex的内容是:密码输入不合法,必须为长度为5-50之间的字母或数字 --> <message>${getText("user.password.regex")}</message> </field-validator> </field> <field name="user.age"> <field-validator type="int"> <param name="min">1</param> <param name="max">130</param> <!--user.age的内容是:年龄输入不合法 --> <message>${getText("user.age")}</message> </field-validator> </field> </validators>
以上三步后,就完成了国际化的验证校验了!
六.常用内建的较验器
1. 必填字符串校验器requiredstring
字段校验器 <field name="user.username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空</message> </field-validator> </field> 非字段校验器 <validator type=”requiredstring”> <param name="fildname">user.name</param> <param name=”trim”>true</param> <message>用户名不能为空</message> </validator>2.整数范围校验器 int
filedName:用于非字段校验器,指定需要验证的属性名。
Min: 可选参数,用于指定整数最小值
Max:可选参数,用于指定最大值。
字段校验器 <field name="user.age"> <field-validator type="int"> <param name="min">1</param> <param name="max">130</param> <message>年龄输入不合法</message> </field-validator> </field> 非字段校验器 <validator type=”int”> <param name="fildname"> user.age </param> <param name=”min”>1</param> <param name=”max”>130</param> <message>年龄输入不合法</message> </validator>3.正则表达式校验器
Fieldname:非字段校验器具有该属性,指定Action属必名。
Expression:必填,指定正则表达式
caseSensitive:非必填,指定是否区分大小写,默认为true.
字段校验器 <field name="user.username"> <field-validator type="regex"> <param name="expression"><![CDATA[(\w{5,50})]]></param> <message>用户名输入不合法,必须为长度为5-50之间的字母或数字</message> </field-validator> </field> 非字段校验器 <validator type=” regex”> <param name="fildname"> user.username </param> <param name=” expression”><![CDATA[(\w{5,50})]]></param> <message>用户名输入不合法,必须为长度为5-50之间的字母或数字</message> </validator>
4.必填校验器
字段校验器 <field name="user.username"> <field-validator type="required"> <message>用户名不能为空</message> </field-validator> </field> 非字段校验器 <validator type=”required”> <param name="fildname">user.name</param> <message>用户名不能为空</message> </validator>
5.字符串度度校验器
字段校验器 <field name=”user.username”> <field-validator type=”stringlength”> <param name=”minLength”>5</param> <param name=”maxLength”>50</param> <message>用户名长度必须在5-50之间</message> </field-validator > </field > 非字段校验器 < validator type=”stringlength”> <param name=”fieldname”>user.username</param> <param name=”minLength”>5</param> <param name=”maxLength”>50</param> <message>用户名长度必须在5-50之间</message> </validator>
6.日期校验器
字段校验器 <field name="user.birthDate"> <field-validator type="date"> <param name="min">1850-01-01</param> <param name="max">2015-07-20</param> <message>出生日期输入不合法</message> </field-validator> </field> 非字段校验器 < validator type="date"> <param name="fieldname"> user.birthDate </param> <param name="min">1850-01-01</param> <param name="max">2015-07-20</param> <message>出生日期输入不合法</message> </ validator>7.网址校验器
字段校验器 <field name="user.url"> <field-validator type="url"> <message>个人首页输入不合法</message> </field-validator> </field> 非字段校验器 < validator type="url"> <param name=”fieldname”>user.url</param> <message>个人首页输入不合法</message> </validator>
8.邮件地址校验器
字段校验器 <field name="user.email"> <field-validator type="email"> <message> Email地址不合法</message> </field-validator> </field> 非字段校验器 < validator type="email"> <param name=”fieldname”> user.email </param> <message> Email地址不合法</message> </validator>
评论
5 楼
lixia0417
2010-05-27
恩,LZ,谢谢了,那我还是练习把SSh的例子改成S2sh的吧,呵呵,哎,现在s2sh整合开发的例子还真是有点少啊,大都是SSh的,呵呵
4 楼
hhr_michael
2010-05-26
哥们,你好,这本书着重s2sh的各个部分开发,而整合的例子不是很多,只有三章是整合的例子,且都是很基础的。
3 楼
lixia0417
2010-05-26
对,哥们,问一下,这本书中关于S2SH整合开发的例子多吗,就是用三个框架一起开发的例子,想多练习一下,买本书,呵呵
2 楼
hhr_michael
2010-05-25
谢谢提醒,由于只是着重校验的过程,所以这代码没有在struts.xml中配置对应的视图。
1 楼
lixia0417
2010-05-25
楼主写得不错,受教了, 不过觉得<code> public String reg(){
//实现代码省略
return null;
}
public String login(){
//实现代码省略
return null;
}
public String execute(){
return null;
} </code>
返回空,有点怪怪的,还不如直接返回“success”呢,虽然在Struts.xml中没有配置对应的视图页面;
//实现代码省略
return null;
}
public String login(){
//实现代码省略
return null;
}
public String execute(){
return null;
} </code>
返回空,有点怪怪的,还不如直接返回“success”呢,虽然在Struts.xml中没有配置对应的视图页面;
发表评论
-
struts2+hibernate3+spring2读书笔记15(核心机制-----IOC)
2010-07-21 12:16 1385... -
struts2+hibernate3+spring2读书笔记14(Spring入门)
2010-06-21 14:31 1017... -
struts2+hibernate3+spring2读书笔记13(Hibernate的事务控制)
2010-06-21 11:27 1137... -
struts2+hibernate3+spring2读书笔记12(操纵实体对象)
2010-06-21 10:07 958... -
struts2+hibernate3+spring2读书笔记11(Hibernate查询)
2010-06-15 14:25 1451... -
struts2+hibernate3+spring2读书笔记10(Hibernate配置文件)
2010-06-14 09:27 1378... -
struts2+hibernate3+spring2读书笔记9(Hibernate入门)
2010-06-10 09:41 920第1 ... -
struts2+hibernate3+spring2读书笔记8(OGNL)
2010-06-09 11:30 1017... -
struts2+hibernate3+spring2读书笔记7(Struts 2 标签库)
2010-06-08 15:15 990... -
struts2+hibernate3+spring2读书笔记6(拦截器)
2010-06-02 16:42 861第 ... -
struts2+hibernate3+spring2读书笔记5(类型转换)
2010-05-27 11:45 894第 ... -
struts2+hibernate3+spring2读书笔记3(国际化web 应用 )
2010-05-19 10:21 1155最近买了谢星星(阿蜜果)的企业应用架构设计-Struts2+H ... -
struts2+hibernate3+spring2读书笔记2(struts2配置文件)
2010-05-17 16:45 1078最近买了谢星星(阿蜜 ... -
struts2+hibernate3+spring2读书笔记1(struts2 开发环境)
2010-05-17 10:10 1240最近买了谢星星(阿蜜果)的企业应用架构设计-Struts2+H ...
相关推荐
论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts...
《JavaEE实用开发指南:基于Weblogic+EJB3+Struts2+Hibernate+Spring》-- part2/3
Struts 2+Hibernate+Spring实现论坛系统
同时使用了Struts2、Spring4、Hibernate4、log4j、slf4j、junit4、ehcache等库或框架,搭建一个最基本的项目原型。 三、 三大框架最新版本下载:截止2014-10-01 Struts2.3.6:发布于2014-05-03,目前的最新版本。...
一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去
网络硬盘(Struts 2+Hibernate+Spring实现)网络硬盘(Struts 2+Hibernate+Spring实现)网络硬盘(Struts 2+Hibernate+Spring实现)网络硬盘(Struts 2+Hibernate+Spring实现)网络硬盘(Struts 2+Hibernate+Spring...
Struts2+hibernate+spring开发,使用MySQL数据,实现学生基本信息的增删改查功能,但是页面不美观
基于Struts2+Spring+Hibernate+MySql的注册登录系统.zip
毕业设计 基于SSH2新闻发布管理系统,使用Struts2+Hibernate4.2+Spring3等JavaWeb框架完成
Struts2+hibernate+spring 构建的在线音乐网站
希望此套框架整合对深入了解和学校Struts2+Spring4+Hibernate4三大框架整合技术有帮助
Struts2+Hibernate+Spring整合后的增删改查 内有jar包,每个类中都有注释。清晰简单。一目了然。没有任何杂乱代码。 运行正常,数据库是mysql数据库。适合初学者参考。
struts2 + spring 3 + hibernate3.3整合实现图书馆管理系统登陆和注册,以及一个对书籍表的增删改查,分页显示。
Java Web技术整合应用与项目实战 JSP+Servlet+Struts2+Hibernate+Spring3_13336769.zip.003 Java Web技术整合应用与项目实战 JSP+Servlet+Struts2+Hibernate+Spring3_13336769.zip.003
web框架PPT——Struts 2+Hibernate+MyBatis+Spring 网站开发案例课堂 备注:书籍信息:清华大学出版社,9787302500605
有关Struts2+Spring+Hibernate和Struts2+Spring+Ibatis的整合实例demo 原创,完全基于eclipse开发
全套源码-论坛系统(Struts 2+Hibernate+Spring实现)
struts2 + hibernate3 + spring3 ssh 实现用户的增删改查
这是一个struts 1.2 + spring 2.5 + hibernate 3.2框架demo, 运行环境为eclipse 3.2 + tomcat 5.5 + oracle 11g
(1)该项目是基于spring3+struts2+hibernate3+spring security3的权限管理项目 (2)后台我已经实现了权限管理,包括用户,角色和资源的分配。前台实现了spring security3的管理 (3)网上案例普遍是后台单一登陆。...