- 浏览: 35269 次
- 性别:
- 来自: 重庆
文章分类
最新评论
-
walle1027:
感谢,正式需要的
spring3 hibernate4 如何支持EventListener 系统操作日志 -
paomo30000:
你好博主。请问为什么测试类里可以跑通,但到了实际项目里却得到是 ...
JBPM 4.3 Email与Notification例子 -
dml123:
smtp服务器需要认证的该把认证信息加到哪里呢,我加到prop ...
JBPM 4.3 Email与Notification例子
Myeclipse下的Struts+Spring+Hibernate
开发实例2009-03-03 23:20开发工具:
eclipse-SDK-3.2.1、MyEclipse_5.0.1GA_E3.2、Tomcat_5.5.15、mysql-5.0.18
开始。。新建工程:名称为 login
创建Struts框架
创建 index.jsp,增加一链接指向 login.jsp
<html>
<head>
<title>Struts+Spring+Hibernate</title>
</head>
<body>
<a href="login.jsp">Login</a>
</body>
</html>
按下Ctrl + N,创建 login.jsp、LoginAction,使用MyEclipse的向导就可以了,记得选对正确的版本
在ActionForm配置页中选择类型为动态Form,并继承于DynaValidatorForm,新增两个属性:username、password,
在创建jsp文件打上钩,将路径改为/login.jsp,然后下一步,改LoginAction的Input source改为/login.jsp,点击完成
按下Ctrl + N 创建一个forwards,记得选对正确的版本
name 输入 indexGo
路径选择 /index.jsp
配置validator
先添加Struts插件,使用向导
Plugin class : org.apache.struts.validator.ValidatorPlugIn
Property : pathnames
Value : /WEB-INF/validator-rules.xml,/WEB-INF/validation.xml
这里需要两个xml文件
现在创建“validation.xml” 文件
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "validator_1_1_3.dtd" >
<form-validation>
<formset>
<form name="loginForm">
<field property="username" depends="required">
<arg0 key="prompt.username" />
</field>
<field property="password" depends="required">
<arg0 key="prompt.password" />
</field>
</form>
</formset>
</form-validation>
编辑资源文件“ApplicationResources.properties”
增加以下内容
prompt.username=User Name
prompt.password=User Password
errors.required={0} is required.
再创建中文件资源文件“ApplicationResources_zh_CN.properties”
增加以下内容
prompt.username=用户名称
prompt.password=登录密码
errors.required={0} 必需填写!
我这没有用Properties Editor插件,所以在tomcat发布后会显示乱码,我们可以用native2ascii来解决
我建了个批处理文件properties2GBK.bat
native2ascii -encoding gbk ApplicationResources_zh_CN.properties temp.properties
del ApplicationResources_zh_CN.properties
rename temp.properties ApplicationResources_zh_CN.properties
放在你的classpath下,或者拷到你要转GBK的地方,双击一下就可以了
我刚开始在eclipse编辑中文properties文件,保存后再打开,也会出现乱码,只要在eclipse上设置一下就可以了
具体设置:Eclipse-->Preferences...-->在“type filter text“栏中输入”Content Types“查找,
然后在选择右边的Text下边相应的文件后缀名,即properties.修改其编码就可。可以修改成GBK
我这已经改好了,直接打开就是汉语了。。。
建议下载 properties Editor插件,我这上不了外国网站,没有办法。。。。有空再下吧。。
修改struts-config.xml文件
在以下位置增加validate="true"
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.test.struts.action.LoginAction" />
</action-mappings>
这里说明提交的数据必需经过验证,而验证则是通过validator框架进行的。
修改web.xml文件
增加
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
显示主页
修改LoginAction.java文件的execute方法,内容如下
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;
String username=loginForm.getString("username");
String password=loginForm.getString("password");
if(username.equals("test")||password.equals("test")){
return mapping.findForward("indexGo");
}else{
return mapping.getInputForward();
}
}
现在再修改一下login.jsp
增加以下部份
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
其中charset=UTF-8 是使用UTF-8的字符编码,这也是为了支持国际化而使用的。要不然中文还是会显示乱码
关于乱码解决,网上查资料,一查就有一堆
我们现在还没有传递中文参数,要不然还得加个过滤器。。
好了,现在可以启动Tomcat进行测试了
http://localhost:8080/login/
如果不输入任何数据而直接提交表单的话就可以看到效果了。
好了,如果没有什么问题的话就继续往下看吧,如果有问题的话就得往上看了^_^
出现了乱码,我们用native2ascii来解决,非得我重启一下!> ok了
现在创建Spring框架了,在这里我将Spring所有的包全部加载进去,因为我还不知道具体用到哪些类,全部加进去方便点
单选框选第二个,这样的话所有的类库和标签等都将拷贝到项目中去,这样方便以后的布署
下一步后是创建配置文件,将文件放到“WebRoot/WEB-INF”目录下,文件名称为“applicationContext.xml”
配置struts-config.xml文件,添加(spring)的插件
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
修改LoginAction配置
原:
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.test.struts.action.LoginAction" />
</action-mappings>
改为:
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="org.springframework.web.struts.DelegatingActionProxy" />
</action-mappings>
这里将使用spring的代理器来对Action进行控制
当提交到/login.do是将控制权交给了spring,然后由spring来决定是否转回到struts的Action
现在来配置spring
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
</beans>
属性singleton="false",指明了Action 的实例获取方式为每次重新创建。解决了Struts中令人诟病的线程安全问题(Struts中,由一个Action实例处理所有的请求,这就导致了类公用资源在并发请求中的线程同步问题。)(摘自spring开发指南)
测试一下,如果没有什么问题的话就继续往下看吧,如果有问题的话就得往上看了^_^
好的,struts spring俩人成为朋友了,友好的集成到了一起。。。
建立数据库在 这里我使用的是mysql-5.0.18
配置好mySql连接......
不好意思,这里我忘记驱动怎么写了。。。
CREATE TABLE `user` (
`ID` int(11) NOT NULL auto_increment,
`USERNAME` varchar(50) NOT NULL default '',
`PASSWORD` varchar(50) NOT NULL default '',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
添加记录 insert into user (USERNAME,PASSWORD) values ('test','test')
创建Hibernate框架
新建包com.test.hibernate
com.test.beans
选hibernate3.1 libraries全选,我也不知道那个具体有什么用^_^,可能只选第一个也行,但考虑还要用DAO,第三个也选上了,
看第二是高级支持,也加上了,没试里面的作用,大家有空可以试一下。。
第二步选 spring configuration file 我们直接在Spring配置hibernate的连接。。就不用创建hibernate.cfg.xml了
第三步选existing Spring configuration file我们刚才已经创建了一个。。
SessionFactory ID就直接填sessionFactory
第四步 Bean Id填 dataSource 我们用JDBC Driver,DB Profile选刚才配置好的
使用MyEclipse的数据Database Explorer工具创建User.hmb.xml、AbstractUser.java、User.java,UserDAO文件
这里选项比较多,大家看视频。。我就不一一说明了。。。不懂的看书^_^
打开User.hbm.xml配置文件,把 catalog="meilvin" 这一项删除了,要不后果很严重。因为mySql在连接的时候要写上数据库
如果我们在这里也写上数据库的名字的话就会重复了,就变成了meilvin.meilvin.user,显然是错的。后面就会报错,我深有体会。
修改UserDAO,增加如下方法
public boolean isValidUser(String username, String password) {
String hql = "from User u where u.username=? and u.password=?";
String []userInfo=new String[2];
userInfo[0]=username;
userInfo[1]=password;
List userList = this.getHibernateTemplate().find(hql, userInfo);
if (userList.size() > 0) {
return true;
}
return false;
}
修改LoginAction.java文件,使用userDao的方法来进行用户验证
package com.test.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;
import com.test.UserDAO;
public class LoginAction extends Action {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;
// TODO Auto-generated method stub
String username = (String) loginForm.get("username");
String password = (String) loginForm.get("password");
loginForm.set("password", null);
if (userDAO.isValidUser(username,password)) {
return mapping.findForward("indexGo");
} else {
return mapping.getInputForward();
}
}
}
现在剩下最后的spring配置了
把原来的
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
删除了
在最底下增加
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">
<property name="userDAO">
<ref bean="UserDAO" />
</property>
</bean>
利用反转控制产生action
现在可以进行测试了,可以登陆了^-^
老是说log4j没有配置,下次视频配置一下。。。成功了。。
注册新用户,用户浏览、删除用户
打开 UserDAO.java 文件,增加以下方法:
public boolean addUser(User user) {
try {
//调用前面save方法
save(user);
} catch (Exception e) {
System.out.println(e.getMessage());
return false;
}
return true;
}
按下 Ctrl + N ,使用向导创建 adduser.jsp 、AdduserForm(DynaValidatorForm)、AdduserAction.java文件,这是注册新用户的Action
我用的是maxthon浏览器,如果是add.jsp,它会当做广告拦下来,,,,多加个user...
修改配置内容如下:
<action
attribute="adduserForm"
input="/adduser.jsp"
name="adduserForm"
path="/adduser"
validate="true"
type="org.springframework.web.struts.DelegatingActionProxy" />
第一句实现了必须对提交的数据进行验证
第二句实现了和spring集成
修改 AdduserAction.java 文件,内容如下:
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
DynaValidatorForm adduserForm = (DynaValidatorForm) form;
User user = new User();
user.setUsername(adduserForm.getString("username"));
user.setPassword(adduserForm.getString("password"));
adduserForm.set("password", null);
if (userDAO.addUser(user)) {
return mapping.findForward("indexGo");
} else {
return mapping.getInputForward();
}
}
关于在Action中使用 User 对像,我在这里没有使用 IoC 方式进行管理,这不好,希望大家在正式应用中使用。
在spring配置文件(applicationContext.xml)中加入以下内容:
<bean name="/adduser" class="com.test.struts.action.AdduserAction"
singleton="false">
<property name="userDAO">
<ref bean="UserDAO" />
</property>
</bean>
修改 index.jsp 文件
<html>
<head>
<title>Struts+Spring+Hibernate</title>
</head>
<body>
<a href="login.jsp">Login</a>
<br>
<a href="add.jsp">Add User</a>
</body>
</html>
修改 adduser.jsp 文件的首行,替换为以下内容,目的是为了使用UTF-8的编码格式显示页面
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
修改 validation.xml 文件,加入以下内容:
<form name="adduserForm">
<field property="username" depends="required">
<arg0 key="prompt.username" />
</field>
<field property="password" depends="required">
<arg0 key="prompt.password" />
</field>
</form>
现在整个 AddUser 已经完成,如果你觉得不放心的话可以在这里停一停先进行这一段的测试!
创建一个Action用于查询数据,名称为 find
创建 display.jsp 文件,用于显示所有用户
创建一个 forward displayGO 指向 display.jsp 选中 redirect
修改 UserDAO.java 文件,增加 findAllUser() 方法,代码如下:
public List findAllUser() {
List users=this.getHibernateTemplate().find("from User u");
if(users.size()>0)
return users;
return null;
}
修改 struts-config.xml 文件
<action path="/find" type="org.springframework.web.struts.DelegatingActionProxy" />
修改 FindAction.java 文件,内容如下:
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
List users=userDAO.findAllUser();
if(users!=null){
HttpSession session=request.getSession();
session.setAttribute("users",users);
return mapping.findForward("displayGo");
}
return mapping.getInputForward();
}
在spring配置文件(applicationContext.xml)中加入以下内容:
<bean name="/find" class="com.test.struts.action.FindAction" singleton="false">
<property name="userDAO">
<ref bean="UserDAO" />
</property>
</bean>
修改 display.jsp 文件,内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%>
<html>
<head>
<title>DISPLAY</title>
</head>
<body>
<logic:present name="users">
<form action="del.do">
<table border="1">
<logic:iterate id="element" name="users">
<tr><td width="100">
<input type="radio" name="select" value="<bean:write name="element" property="id"/>">
<bean:write name="element" property="username"/>
</td></tr>
</logic:iterate>
</table>
<INPUT type="submit" name="Submit" value="submit">
</form>
</logic:present>
</body>
</html>
现在整个 Display 已经完成,如果你觉得不放心的话可以在这里停一停先进行这一段的测试!
新建一个 Action 用于删除选中的用户,name:del
修改 struts-config.xml 文件中的以下内容为:
<action path="/del" type="org.springframework.web.struts.DelegatingActionProxy" />
修改 UserDAO.java 文件,增加以下方法
public boolean delUser(Integer lid) {
try {
User user=(User)findById(lid);
this.getHibernateTemplate().delete(user);
} catch (Exception e) {
System.out.println(e.getMessage());
return false;
}
return true;
}
修改 DelAction.java 文件,内容如下:
public class DelAction extends Action {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
Integer selid=Integer.valueOf(request.getParameter("select"));
if(userDAO.delUser(selid))
return mapping.findForward("indexGo");
return mapping.getInputForward();
}
}
Ctrl+Shift+o导入包
在spring配置文件(applicationContext.xml)中加入以下内容:
<bean name="/del" class="com.test.struts.action.DelAction" singleton="false">
<property name="userDAO">
<ref bean="UserDAO" />
</property>
</bean>
修改 index.jsp 文件
<html>
<head>
<title>Struts+Spring+Hibernate</title>
</head>
<body>
<a href="login.jsp">Login</a>
<br>
<a href="add.jsp">Add User</a>
<br>
<a href="find.do">Display</a>
</body>
</html>
开发实例2009-03-03 23:20开发工具:
eclipse-SDK-3.2.1、MyEclipse_5.0.1GA_E3.2、Tomcat_5.5.15、mysql-5.0.18
开始。。新建工程:名称为 login
创建Struts框架
创建 index.jsp,增加一链接指向 login.jsp
<html>
<head>
<title>Struts+Spring+Hibernate</title>
</head>
<body>
<a href="login.jsp">Login</a>
</body>
</html>
按下Ctrl + N,创建 login.jsp、LoginAction,使用MyEclipse的向导就可以了,记得选对正确的版本
在ActionForm配置页中选择类型为动态Form,并继承于DynaValidatorForm,新增两个属性:username、password,
在创建jsp文件打上钩,将路径改为/login.jsp,然后下一步,改LoginAction的Input source改为/login.jsp,点击完成
按下Ctrl + N 创建一个forwards,记得选对正确的版本
name 输入 indexGo
路径选择 /index.jsp
配置validator
先添加Struts插件,使用向导
Plugin class : org.apache.struts.validator.ValidatorPlugIn
Property : pathnames
Value : /WEB-INF/validator-rules.xml,/WEB-INF/validation.xml
这里需要两个xml文件
现在创建“validation.xml” 文件
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "validator_1_1_3.dtd" >
<form-validation>
<formset>
<form name="loginForm">
<field property="username" depends="required">
<arg0 key="prompt.username" />
</field>
<field property="password" depends="required">
<arg0 key="prompt.password" />
</field>
</form>
</formset>
</form-validation>
编辑资源文件“ApplicationResources.properties”
增加以下内容
prompt.username=User Name
prompt.password=User Password
errors.required={0} is required.
再创建中文件资源文件“ApplicationResources_zh_CN.properties”
增加以下内容
prompt.username=用户名称
prompt.password=登录密码
errors.required={0} 必需填写!
我这没有用Properties Editor插件,所以在tomcat发布后会显示乱码,我们可以用native2ascii来解决
我建了个批处理文件properties2GBK.bat
native2ascii -encoding gbk ApplicationResources_zh_CN.properties temp.properties
del ApplicationResources_zh_CN.properties
rename temp.properties ApplicationResources_zh_CN.properties
放在你的classpath下,或者拷到你要转GBK的地方,双击一下就可以了
我刚开始在eclipse编辑中文properties文件,保存后再打开,也会出现乱码,只要在eclipse上设置一下就可以了
具体设置:Eclipse-->Preferences...-->在“type filter text“栏中输入”Content Types“查找,
然后在选择右边的Text下边相应的文件后缀名,即properties.修改其编码就可。可以修改成GBK
我这已经改好了,直接打开就是汉语了。。。
建议下载 properties Editor插件,我这上不了外国网站,没有办法。。。。有空再下吧。。
修改struts-config.xml文件
在以下位置增加validate="true"
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.test.struts.action.LoginAction" />
</action-mappings>
这里说明提交的数据必需经过验证,而验证则是通过validator框架进行的。
修改web.xml文件
增加
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
显示主页
修改LoginAction.java文件的execute方法,内容如下
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;
String username=loginForm.getString("username");
String password=loginForm.getString("password");
if(username.equals("test")||password.equals("test")){
return mapping.findForward("indexGo");
}else{
return mapping.getInputForward();
}
}
现在再修改一下login.jsp
增加以下部份
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
其中charset=UTF-8 是使用UTF-8的字符编码,这也是为了支持国际化而使用的。要不然中文还是会显示乱码
关于乱码解决,网上查资料,一查就有一堆
我们现在还没有传递中文参数,要不然还得加个过滤器。。
好了,现在可以启动Tomcat进行测试了
http://localhost:8080/login/
如果不输入任何数据而直接提交表单的话就可以看到效果了。
好了,如果没有什么问题的话就继续往下看吧,如果有问题的话就得往上看了^_^
出现了乱码,我们用native2ascii来解决,非得我重启一下!> ok了
现在创建Spring框架了,在这里我将Spring所有的包全部加载进去,因为我还不知道具体用到哪些类,全部加进去方便点
单选框选第二个,这样的话所有的类库和标签等都将拷贝到项目中去,这样方便以后的布署
下一步后是创建配置文件,将文件放到“WebRoot/WEB-INF”目录下,文件名称为“applicationContext.xml”
配置struts-config.xml文件,添加(spring)的插件
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
修改LoginAction配置
原:
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.test.struts.action.LoginAction" />
</action-mappings>
改为:
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="org.springframework.web.struts.DelegatingActionProxy" />
</action-mappings>
这里将使用spring的代理器来对Action进行控制
当提交到/login.do是将控制权交给了spring,然后由spring来决定是否转回到struts的Action
现在来配置spring
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
</beans>
属性singleton="false",指明了Action 的实例获取方式为每次重新创建。解决了Struts中令人诟病的线程安全问题(Struts中,由一个Action实例处理所有的请求,这就导致了类公用资源在并发请求中的线程同步问题。)(摘自spring开发指南)
测试一下,如果没有什么问题的话就继续往下看吧,如果有问题的话就得往上看了^_^
好的,struts spring俩人成为朋友了,友好的集成到了一起。。。
建立数据库在 这里我使用的是mysql-5.0.18
配置好mySql连接......
不好意思,这里我忘记驱动怎么写了。。。
CREATE TABLE `user` (
`ID` int(11) NOT NULL auto_increment,
`USERNAME` varchar(50) NOT NULL default '',
`PASSWORD` varchar(50) NOT NULL default '',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
添加记录 insert into user (USERNAME,PASSWORD) values ('test','test')
创建Hibernate框架
新建包com.test.hibernate
com.test.beans
选hibernate3.1 libraries全选,我也不知道那个具体有什么用^_^,可能只选第一个也行,但考虑还要用DAO,第三个也选上了,
看第二是高级支持,也加上了,没试里面的作用,大家有空可以试一下。。
第二步选 spring configuration file 我们直接在Spring配置hibernate的连接。。就不用创建hibernate.cfg.xml了
第三步选existing Spring configuration file我们刚才已经创建了一个。。
SessionFactory ID就直接填sessionFactory
第四步 Bean Id填 dataSource 我们用JDBC Driver,DB Profile选刚才配置好的
使用MyEclipse的数据Database Explorer工具创建User.hmb.xml、AbstractUser.java、User.java,UserDAO文件
这里选项比较多,大家看视频。。我就不一一说明了。。。不懂的看书^_^
打开User.hbm.xml配置文件,把 catalog="meilvin" 这一项删除了,要不后果很严重。因为mySql在连接的时候要写上数据库
如果我们在这里也写上数据库的名字的话就会重复了,就变成了meilvin.meilvin.user,显然是错的。后面就会报错,我深有体会。
修改UserDAO,增加如下方法
public boolean isValidUser(String username, String password) {
String hql = "from User u where u.username=? and u.password=?";
String []userInfo=new String[2];
userInfo[0]=username;
userInfo[1]=password;
List userList = this.getHibernateTemplate().find(hql, userInfo);
if (userList.size() > 0) {
return true;
}
return false;
}
修改LoginAction.java文件,使用userDao的方法来进行用户验证
package com.test.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;
import com.test.UserDAO;
public class LoginAction extends Action {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;
// TODO Auto-generated method stub
String username = (String) loginForm.get("username");
String password = (String) loginForm.get("password");
loginForm.set("password", null);
if (userDAO.isValidUser(username,password)) {
return mapping.findForward("indexGo");
} else {
return mapping.getInputForward();
}
}
}
现在剩下最后的spring配置了
把原来的
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
删除了
在最底下增加
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">
<property name="userDAO">
<ref bean="UserDAO" />
</property>
</bean>
利用反转控制产生action
现在可以进行测试了,可以登陆了^-^
老是说log4j没有配置,下次视频配置一下。。。成功了。。
注册新用户,用户浏览、删除用户
打开 UserDAO.java 文件,增加以下方法:
public boolean addUser(User user) {
try {
//调用前面save方法
save(user);
} catch (Exception e) {
System.out.println(e.getMessage());
return false;
}
return true;
}
按下 Ctrl + N ,使用向导创建 adduser.jsp 、AdduserForm(DynaValidatorForm)、AdduserAction.java文件,这是注册新用户的Action
我用的是maxthon浏览器,如果是add.jsp,它会当做广告拦下来,,,,多加个user...
修改配置内容如下:
<action
attribute="adduserForm"
input="/adduser.jsp"
name="adduserForm"
path="/adduser"
validate="true"
type="org.springframework.web.struts.DelegatingActionProxy" />
第一句实现了必须对提交的数据进行验证
第二句实现了和spring集成
修改 AdduserAction.java 文件,内容如下:
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
DynaValidatorForm adduserForm = (DynaValidatorForm) form;
User user = new User();
user.setUsername(adduserForm.getString("username"));
user.setPassword(adduserForm.getString("password"));
adduserForm.set("password", null);
if (userDAO.addUser(user)) {
return mapping.findForward("indexGo");
} else {
return mapping.getInputForward();
}
}
关于在Action中使用 User 对像,我在这里没有使用 IoC 方式进行管理,这不好,希望大家在正式应用中使用。
在spring配置文件(applicationContext.xml)中加入以下内容:
<bean name="/adduser" class="com.test.struts.action.AdduserAction"
singleton="false">
<property name="userDAO">
<ref bean="UserDAO" />
</property>
</bean>
修改 index.jsp 文件
<html>
<head>
<title>Struts+Spring+Hibernate</title>
</head>
<body>
<a href="login.jsp">Login</a>
<br>
<a href="add.jsp">Add User</a>
</body>
</html>
修改 adduser.jsp 文件的首行,替换为以下内容,目的是为了使用UTF-8的编码格式显示页面
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
修改 validation.xml 文件,加入以下内容:
<form name="adduserForm">
<field property="username" depends="required">
<arg0 key="prompt.username" />
</field>
<field property="password" depends="required">
<arg0 key="prompt.password" />
</field>
</form>
现在整个 AddUser 已经完成,如果你觉得不放心的话可以在这里停一停先进行这一段的测试!
创建一个Action用于查询数据,名称为 find
创建 display.jsp 文件,用于显示所有用户
创建一个 forward displayGO 指向 display.jsp 选中 redirect
修改 UserDAO.java 文件,增加 findAllUser() 方法,代码如下:
public List findAllUser() {
List users=this.getHibernateTemplate().find("from User u");
if(users.size()>0)
return users;
return null;
}
修改 struts-config.xml 文件
<action path="/find" type="org.springframework.web.struts.DelegatingActionProxy" />
修改 FindAction.java 文件,内容如下:
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
List users=userDAO.findAllUser();
if(users!=null){
HttpSession session=request.getSession();
session.setAttribute("users",users);
return mapping.findForward("displayGo");
}
return mapping.getInputForward();
}
在spring配置文件(applicationContext.xml)中加入以下内容:
<bean name="/find" class="com.test.struts.action.FindAction" singleton="false">
<property name="userDAO">
<ref bean="UserDAO" />
</property>
</bean>
修改 display.jsp 文件,内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%>
<html>
<head>
<title>DISPLAY</title>
</head>
<body>
<logic:present name="users">
<form action="del.do">
<table border="1">
<logic:iterate id="element" name="users">
<tr><td width="100">
<input type="radio" name="select" value="<bean:write name="element" property="id"/>">
<bean:write name="element" property="username"/>
</td></tr>
</logic:iterate>
</table>
<INPUT type="submit" name="Submit" value="submit">
</form>
</logic:present>
</body>
</html>
现在整个 Display 已经完成,如果你觉得不放心的话可以在这里停一停先进行这一段的测试!
新建一个 Action 用于删除选中的用户,name:del
修改 struts-config.xml 文件中的以下内容为:
<action path="/del" type="org.springframework.web.struts.DelegatingActionProxy" />
修改 UserDAO.java 文件,增加以下方法
public boolean delUser(Integer lid) {
try {
User user=(User)findById(lid);
this.getHibernateTemplate().delete(user);
} catch (Exception e) {
System.out.println(e.getMessage());
return false;
}
return true;
}
修改 DelAction.java 文件,内容如下:
public class DelAction extends Action {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
Integer selid=Integer.valueOf(request.getParameter("select"));
if(userDAO.delUser(selid))
return mapping.findForward("indexGo");
return mapping.getInputForward();
}
}
Ctrl+Shift+o导入包
在spring配置文件(applicationContext.xml)中加入以下内容:
<bean name="/del" class="com.test.struts.action.DelAction" singleton="false">
<property name="userDAO">
<ref bean="UserDAO" />
</property>
</bean>
修改 index.jsp 文件
<html>
<head>
<title>Struts+Spring+Hibernate</title>
</head>
<body>
<a href="login.jsp">Login</a>
<br>
<a href="add.jsp">Add User</a>
<br>
<a href="find.do">Display</a>
</body>
</html>
相关推荐
《王者归来之JAVA程序开发大全:基于MYECLIPSE平台+STRUTS+HIBERNATE+SPRING主体流框架开发》这本书是为Java开发者提供的一份全面指南,尤其适合那些希望深入理解并掌握企业级Java应用开发的读者。本书以MyEclipse...
标题与描述均指向了“用MyEclipse搭建Struts+Spring+Hibernate框架”的主题,这一文档旨在指导读者如何在MyEclipse环境下构建一个基于Struts、Spring和Hibernate的开发框架,通常被称为SSH(Struts-Spring-Hibernate...
标题 "Eclipse + MyEclipse整合Struts+Spring+Hibernate简单例子开发" 指向的是一个关于如何在集成开发环境Eclipse与MyEclipse中搭建Struts、Spring和Hibernate(SSH)框架的教程。SSH是Java Web开发中常用的一个...
java web 程序开发大全 基于myeclipse平台+struts+hibernate+spring主流框架开发的代码,是一本很好的入门的书,因为大小的关系,分两部分,这是part1,到16章
根据提供的标题、描述以及部分内容,本文将详细解析与MYECLIPSE + STRUTS2 + SPRING4 + HIBERNATE4 + STRUCTS2S+OGNL + MYSQL_5.7.12相关的技术栈及其应用。这些技术在企业级开发中非常常见,能够帮助开发者构建高效...
图解MyEclipse配置struts+hibernate+spring图解MyEclipse配置struts+hibernate+spring图解MyEclipse配置struts+hibernate+spring图解MyEclipse配置struts+hibernate+spring图解MyEclipse配置struts+hibernate+spring...
通过这个"MyEclipse开发Struts+Spring+Hibernate入门"教程,你将逐步掌握如何在MyEclipse环境下搭建SSH环境,创建并运行一个简单的SSH项目,从而对SSH开发有更深入的理解。实践过程中,不断动手操作、调试代码,是...
在IT行业中,集成开发环境(IDE)如MyEclipse是开发者的重要工具,它提供了一站式的解决方案来...通过阅读"图解MyEclipse配置struts+hibernate+spring+FreeMarker"的详细教程,你将能够逐步学习并实践这些配置过程。
图文教程MyEclipse配置struts+hibernate+spring.doc 本文档主要讲述了如何在MyEclipse中配置struts、hibernate和spring三个框架,以实现一个完整的Web应用程序。下面是从本文档中提取的重要知识点: 1.struts框架...
【MyEclipse开发Struts+Spring+Hibernate入门】 在软件开发中,MyEclipse是一款强大的集成开发环境,尤其适用于Java Web应用的开发。本教程将引导你如何使用MyEclipse来构建一个基于Struts、Spring和Hibernate的...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个实例是为初学者设计的,通过MyEclipse集成开发环境,详细介绍了如何将这三大框架整合到一个登录工程中。下面将详细...
"图解MyEclipse配置struts+hibernate+spring"是一个关于如何在MyEclipse集成开发环境中整合这三个流行框架的指南。这个主题涉及到Java EE(J2EE)开发中的重要组成部分:Struts作为MVC框架,Hibernate作为ORM工具,...
在Myeclipse中开发基于Struts、Hibernate和Spring的项目,首先需要正确配置这三个框架的环境,包括安装Myeclipse、下载相关插件和数据库驱动,然后在项目中添加Struts、Hibernate和Spring的支持。接着,根据项目需求...
使用了Struts+Hibernate+Spring来构建整个网站。 布局使用了CSS和DIV。 部署前请修改以下文件: NewReleseSystem\WebRoot\WEB-INF下面的applicationContext.xml文件 修改里面的数据库的用户名和密码为你所安装的...
我上传的所有资源都是免费的,欢迎愿意学习的同学下载。另,所传资源皆为网上收集,版权问题盖不负责
我上传的所有资源都是免费的,欢迎愿意学习的同学下载