[视频教程]基于myeclipse5.0的Struts Spring Hibernate

来源:百度文库 编辑:神马文学网 时间:2024/04/28 17:35:13
[视频教程]基于myeclipse5.0的Struts+Spring+Hibernate开发实例 [转贴 2006-11-12 20:58:28 ] 发表者: meilvin   

我的博客:http://meilvin.blog.hexun.com
QQ:586762
说明:此教程是oksonic视频教程的修改,我移植到eclipse3.2+myEclipse5.0环境下
工具:
    eclipse-SDK-3.2.1、MyEclipse_5.0.1GA_E3.2、Tomcat_5.5.15、mysql-5.0.18

相关资料下载

说明:http://meilvin.gbaopan.com/files/0584e783cd5b489baaa072f3c5616038.gbp

properties2GBK.bat:http://meilvin.gbaopan.com/files/75bad8e012a94b6f8ab1f03ac5e17dba.gbp

视频教程下载下面五个放在同一文件夹解压即可

http://meilvin.gbaopan.com/files/83b41d79529c4c3c807d61310465043b.gbp

http://meilvin.gbaopan.com/files/0ff8c56ccd134f2e9730d0f4cf38a59b.gbp

http://meilvin.gbaopan.com/files/4d3c645ca0dc415dae16b2eb56de2270.gbp

http://meilvin.gbaopan.com/files/f3683bd4a9c44d7b95452089dda4a4fb.gbp

http://meilvin.gbaopan.com/files/e41ad14882bf40a5ba0cd6d238c5f602.gbp
 
开始。。新建工程:名称为 login
 
创建Struts框架
 
创建 index.jsp,增加一链接指向 login.jsp

 
    Struts+Spring+Hibernate
 
 
 
    Login
 

 
按下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” 文件

 
文件内容如下:



 
 


  
   
  

  
   
  

 

 

 
编辑资源文件“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"

          attribute="loginForm"
      input="/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      validate="true"
      type="com.test.struts.action.LoginAction" />
 

 
这里说明提交的数据必需经过验证,而验证则是通过validator框架进行的。

修改web.xml文件
增加
 
   index.jsp
 

显示主页
 
修改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)的插件
 

   
 

 
 
修改LoginAction配置
 
原:
      attribute="loginForm"
      input="/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      validate="true"
      type="com.test.struts.action.LoginAction" />
 
 
 
改为:
      attribute="loginForm"
      input="/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      validate="true"
      type="org.springframework.web.struts.DelegatingActionProxy" />
 
 
 
这里将使用spring的代理器来对Action进行控制
 
当提交到/login.do是将控制权交给了spring,然后由spring来决定是否转回到struts的Action
 
现在来配置spring
 


 

 

 
属性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配置了
把原来的

删除了
在最底下增加
 
 
  
 

 

利用反转控制产生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...

修改配置内容如下:
      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)中加入以下内容:
   singleton="false">
  
   
  

 

修改 index.jsp 文件

 
    Struts+Spring+Hibernate
 
 
 
    Login
   

    Add User
 

修改 adduser.jsp 文件的首行,替换为以下内容,目的是为了使用UTF-8的编码格式显示页面
<%@ page language="java" contentType="text/html; charset=UTF-8" %>

修改 validation.xml 文件,加入以下内容:
  


   
    
   

   
    
   

  


现在整个 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 文件

修改 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)中加入以下内容:
 
  
   
  

 

修改 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"%>

 
    DISPLAY
 
 
   
   


   
   
 

   
   

  ">
     
   

   
   

   
 

现在整个 Display 已经完成,如果你觉得不放心的话可以在这里停一停先进行这一段的测试!

新建一个 Action 用于删除选中的用户,name:del

修改 struts-config.xml 文件中的以下内容为:

修改 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)中加入以下内容:
 
  
   
  

 

修改 index.jsp 文件

 
    Struts+Spring+Hibernate
 
 
 
    Login
   

    Add User
   

    Display
 


代码已经全部完成,可以进行测试了!!!

如果测试不成功,请往回查看。。。。完了!!!
失误失误,大小写不注意,就是这种后果,大家以后要注意点哦
好了,成功了,祝大家都成功!
拜拜!

标签: 视频教程    票数:0我顶【发起辩论】  [手机订阅] [收藏到我的网摘][推荐] | [评论] | [投诉] | [打印]本文章被推荐到了0个圈子点击数: 3152   评论数: 7本文章引用通告地址(TrackBack Ping URL)为: http://post.blog.hexun.com/meilvin/trackback.aspx?articleid=6441944&key=632989619082700000