`
王者之剑
  • 浏览: 196745 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

Struts2+Spring2.5+Hibernate3.2实例教程(2-3)V0.1

    博客分类:
  • java
阅读更多

1.7)新建AdminAction类
新建文件Bitrac\src\com\albertsong\bitrac\action\AdminAction.java,(以后所有XXAction都放在相同的目录下,不再重复说明)内容如下:

  1. package com . albertsong . bitrac . action ;
  2.  
  3. import   com . albertsong . bitrac . dao . Member ;
  4. import   org . apache . commons . logging . Log ;
  5. import   org . apache . commons . logging . LogFactory ;
  6.  
  7. public   class AdminAction {
  8.    
  9.     private   Log log = LogFactory . getLog ( AdminAction . class ) ;
  10.     private   Member member ;
  11.  
  12.     public   Member getMember () {
  13.         return   member ;
  14.     }
  15.     public   void setMember ( Member member ) {
  16.         this . member = member ;
  17.     }
  18.  
  19.     public   String login (){
  20.         log . debug ( " member.username= " + member . getUsername ()) ;
  21.         log . debug ( " member.password= " + member . getPassword ()) ;
  22.         return   " success " ;
  23.     }
  24.    
  25. }


要让log起作用需要将
D:\JavaTools\spring-framework-2.5.5\lib\log4j\log4j-1.2.15.jar
D:\JavaTools\spring-framework-2.5.5\lib\jakarta-commons\commons-logging.jar
复制到/WEB-INF/lib下
将 commons-logging.jar改名为commons-logging-1.1.1.jar,并将commons-logging-api- 1.1.jar删掉。(我们只需要同一个组件的最新版本,多余的将被删除,以后不再重复说明,如果大家发现加入到/WEB-INF/lib里的后来又没 了,那就是删除了)。
然后在Eclipse里点选Bitrac,按F5刷新,这时工程的文件列表已经更新。Alt+Enter打开工程属性对话 框。Java Build PathLibrariesAdd JARs…将commons-logging-1.1.1.jar添加到编译路径,log4j-1.2.15.jar不需要添加,这个是在运行时起作用, 编译时不需要。添加好以后,编译的错误提示应该都消失了。
做好这些以后还需要对Log4j做一些配置。
在/WEB-INF/web.xml文件中添加
<context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>bitrac.root</param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>
    <listener>    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
bitrac.root定义了一个代表Web应用程序根目录的变量,这个变量会在log4j.properties中使用。
加好以后完整的web.xml如下:

  1. <? xml version = " 1.0 " encoding = " UTF-8 " ?>
  2. < web-app   id = " bitrac " version = " 2.4 " xmlns = " http://java.sun.com/xml/ns/j2ee " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation = " http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " >
  3.     < display-name > Bitrac Blog </ display-name >
  4.    
  5.     < context-param >
  6.         < param-name > webAppRootKey </ param-name >
  7.         < param-value > bitrac.root </ param-value >
  8.     </ context-param >
  9.  
  10.     < context-param >
  11.         < param-name > log4jConfigLocation </ param-name >
  12.         < param-value > /WEB-INF/classes/log4j.properties </ param-value >
  13.     </ context-param >
  14.    
  15.     < filter >
  16.         < filter-name > Struts2 </ filter-name >
  17.         < filter-class >
  18.             org.apache.struts2.dispatcher.FilterDispatcher
  19.         </ filter-class >
  20.     </ filter >
  21.  
  22.     < filter-mapping >
  23.         < filter-name > Struts2 </ filter-name >
  24.         < url-pattern > /* </ url-pattern >
  25.     </ filter-mapping >
  26.     < listener >
  27.         < listener-class > org.springframework.web.util.Log4jConfigListener </ listener-class >
  28.     </ listener >
  29.    
  30.     <!--默认加载/WEB-INF 目录下的applicationContext.xml -->
  31.     < listener >
  32.         < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >
  33.     </ listener >
  34.    
  35.     < welcome-file-list >
  36.         < welcome-file > index.jsp </ welcome-file >
  37.     </ welcome-file-list >
  38.  
  39. </ web-app >


新建Bitrac\src\log4j.properties文件,内容如下:
log4j.rootLogger=INFO, stdout, logfile
log4j.logger.com.albertsong=DEBUG

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${bitrac.root}/WEB-INF/log/bitrac.log
log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
新建目录/WEB-INF/log

新建com.albertsong.bitrac.dao.Member.Java,内容如下:

  1. package com . albertsong . bitrac . dao ;
  2.  
  3. import   java . util . Date ;
  4.  
  5. /**
  6. * @author Albert
  7. *
  8. */
  9. public   class Member {
  10.     private   int id ;
  11.     private   short grade ;
  12.     private   String username ;
  13.     private   String password ;
  14.     private   String validate ;
  15.     private   boolean conserve ;
  16.     private   String contact ;
  17.     private   String picture ;
  18.     private   String explain ;
  19.     private   int numPost ;
  20.     private   int numComm ;
  21.     private   int numFile ;
  22.     private   Date publish ;
  23.     private   String address ;
  24.     public   int getId () {
  25.         return   id ;
  26.     }
  27.     public   void setId ( int id ) {
  28.         this . id = id ;
  29.     }
  30.     public   short getGrade () {
  31.         return   grade ;
  32.     }
  33.     public   void setGrade ( short grade ) {
  34.         this . grade = grade ;
  35.     }
  36.     public   String getUsername () {
  37.         return   username ;
  38.     }
  39.     public   void setUsername ( String username ) {
  40.         this . username = username ;
  41.     }
  42.     public   String getPassword () {
  43.         return   password ;
  44.     }
  45.     public   void setPassword ( String password ) {
  46.         this . password = password ;
  47.     }
  48.     public   String getValidate () {
  49.         return   validate ;
  50.     }
  51.     public   void setValidate ( String validate ) {
  52.         this . validate = validate ;
  53.     }
  54.     public   boolean isConserve () {
  55.         return   conserve ;
  56.     }
  57.     public   void setConserve ( boolean conserve ) {
  58.         this . conserve = conserve ;
  59.     }
  60.     public   String getContact () {
  61.         return   contact ;
  62.     }
  63.     public   void setContact ( String contact ) {
  64.         this . contact = contact ;
  65.     }
  66.     public   String getPicture () {
  67.         return   picture ;
  68.     }
  69.     public   void setPicture ( String picture ) {
  70.         this . picture = picture ;
  71.     }
  72.     public   String getExplain () {
  73.         return   explain ;
  74.     }
  75.     public   void setExplain ( String explain ) {
  76.         this . explain = explain ;
  77.     }
  78.     public   int getNumPost () {
  79.         return   numPost ;
  80.     }
  81.     public   void setNumPost ( int numPost ) {
  82.         this . numPost = numPost ;
  83.     }
  84.     public   int getNumComm () {
  85.         return   numComm ;
  86.     }
  87.     public   void setNumComm ( int numComm ) {
  88.         this . numComm = numComm ;
  89.     }
  90.     public   int getNumFile () {
  91.         return   numFile ;
  92.     }
  93.     public   void setNumFile ( int numFile ) {
  94.         this . numFile = numFile ;
  95.     }
  96.     public   Date getPublish () {
  97.         return   publish ;
  98.     }
  99.     public   void setPublish ( Date publish ) {
  100.         this . publish = publish ;
  101.     }
  102.     public   String getAddress () {
  103.         return   address ;
  104.     }
  105.     public   void setAddress ( String address ) {
  106.         this . address = address ;
  107.     }
  108. }


这里将Member.java放在dao下面,文件如何组织,包括类如何设计,完全是人为的,所谓的惯例和标准只是大家都公认的一些比较好的做法而已。我认为,目前将Member.java放在这里就可以了。


1.8)修改/index.jsp,内容如下:

  1. <%@ page contentType="text/html; charset=UTF-8"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7.     <meta http-equiv="refresh" content="0;url=admincp.jspx" />
  8. </head>
  9. <body>
  10.     <p>Loading ...</p>
  11. </body>
  12. </html>


1.9)新建文件/admin/login.jsp,内容如下:

  1. <%@ page contentType="text/html; charset=UTF-8"%>
  2. <%@ taglib uri="/struts-tags" prefix="s" %>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  4. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5.  
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7.     <head>
  8.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9.         <title> Bitrac Demo Site - 管理员控制面板</title>
  10.     </head>
  11.     <body>
  12.         <div id="content">
  13.             <div id="AdmEnter">
  14.                 <s:actionerror />
  15.                 <s:form action="login" namespace="/admin">
  16.                     <fieldset><legend>管理登录</legend>
  17.                     <s:textfield label="用户名" name="member.username" />
  18.                     <s:password label="密码" name="member.password" />
  19.                     <s:submit value="登录" />
  20.                     </fieldset>
  21.                 </s:form>
  22.             </div>
  23.         </div>
  24.         <div id="footer">
  25.             <p>Powered by <a href="http://www.albertsong.com" target="_blank">Bitrac(J) v0.1</a>. Designed by <a href="mailto:loveyuki@gmail.com">Loveyuki</a> &Programmed by <a href="mailto:albertsong.com@gmail.com">Albert Song</a></p>
  26.         </div>
  27.     </body>
  28. </html>


这里使用了struts的标签来将视图层(JSP)和控制层 (Action)关联在一起。注意到<s:form action="login" namespace="/admin">中的action和namespace就是我们在admin.xml中定义的。通过 name="member.username"这样的形式就可以将Action中的member成员和界面元素关联起来。
1.10)启动Tomcat,浏览http://localhost:8080/bitrac/
如 果上面的操作步骤都正确,那么会看到一个登录页面,点登录按钮会转到另一个页面。现在Struts2和Spring2已经集成在一起了。不过login里 面我们还什么都没写,这个程序还没有任何有用的功能。如果在用户名和密码框中填入内容,点登录以后在Eclipse的Console里会看到相应的调试信 息。
这里有很多警告,原因不清楚,不想看到它们并不难,在log4j.properties文件中log4j.logger.com.albertsong=DEBUG的下面加一行
log4j.logger.com.opensymphony.xwork2=ERROR
好了,现在清静了。

 

分享到:
评论
7 楼 王者之剑 2008-11-21  
frenzy917 写道

又跑步起来...Could not open ServletContext resource [/WEB-INF/applicationContext.xml]这是什么问题?

找不到这个文件。
你要自己建一个文件applicationContext.xml,然后把上一节最后的spring配置内容复制进去才行。
6 楼 frenzy917 2008-11-21  
又跑步起来...

Could not open ServletContext resource [/WEB-INF/applicationContext.xml]

这是什么问题?
5 楼 zhanglubing927 2008-09-10  
很好的教材,学习了!!

PS:强烈建议你把代码使用来标志,这样我们阅读看起来也很好.
4 楼 王者之剑 2008-09-09  
@shenxiaolei
ruvuoai说的是“不需要配置log4的路径”,只能将
<context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
去掉
其它两段要保留。
3 楼 shenxiaolei 2008-09-09  
我这里如果不写就不能加载log4j,怎么回事!
2 楼 王者之剑 2008-09-08  
@ruvuoai
试了,的确默认会加载classes下的log4j.properties
1 楼 ruvuoai 2008-09-05  
不需要配置log4的路径的,默认就在common-log会自动探查出log4j,并加载log4j.properties

相关推荐

    struts1.2 + spring2.5 + hibernate3.2框架demo

    Struts1.2、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,它们各自在应用程序的不同层次上发挥着重要作用。Struts1.2是一个MVC(Model-View-Controller)框架,主要负责处理用户界面与业务逻辑之间的...

    struts2+spring2.5+hibernate3.2整合完整项目,带数据库脚本

    总的来说,这个"struts2+spring2.5+hibernate3.2整合完整项目"提供了一个完整的开发实例,涵盖了前端到后端,以及数据库的各个环节。对于学习者而言,可以深入理解这三大框架的协同工作,提升Java Web开发技能。而...

    struts2+spring2.5+Hibernate3.2整合示例

    Struts2、Spring和Hibernate是Java Web开发中的三...以上就是关于“Struts2+Spring2.5+Hibernate3.2整合示例”的主要知识点,这个整合实例涵盖了Java Web开发中的重要技术,对于开发者来说,深入学习和实践将非常有益。

    struts2.1 + spring 2.5 + hibernate 3.2 增删改查

    总结来说,"struts2.1 + spring 2.5 + hibernate 3.2 增删改查"的例子涵盖了Web应用开发中的核心部分:前端请求处理(Struts2)、业务逻辑管理(Spring)和数据库操作(Hibernate)。这个例子为初学者提供了一个很好...

    cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip

    cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip cdst ssh代码...

    Struts2+Spring2.5+Hibernate3.2集成实例开发2

    Struts2+Spring2.5+Hibernate3.2集成实例开发2 Struts2+Spring2.5+Hibernate3.2集成实例开发2

    struts2+spring2.5+hibernate3.2

    Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,被称为SSH(Struts2、Spring、Hibernate)集成。这个整合包可能是为了帮助开发者快速搭建基于这些技术的项目环境。 Struts2是MVC(Model-View-...

    struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版

    struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...

    struts2+spring2.5+hibernate3.2大型项目

    非常好的学习资料 struts2+spring2.5+hibernate3.2大型项目spring mvc

    Struts2+Spring2.5+Hibernate3.2集成实例开发

    Struts2+Spring2.5+Hibernate3.2集成实例开发 附带我本人写的一个实例,如果默认数据库Oracle10g ,可以根据实际情况调整;文件较大,分为两个部分下载,同时下在完成后,执行Struts2+Spring+Hibernate.part1.rar...

    struts2.1.6+spring2.5=hibernate3.2整合实例

    struts2.1.6+spring2.5+hibernate3.2整合实例,绝对原创,绝对运行正常,jar文件的截图和sql都有 由于自己学习时耗了很多时间所以要分,请大家理解,有什么问题可以和我联系http://blog.163.com/lzy_eagle

    用户登录(Struts1.2+Spring2.5+Hibernate3.2)

    1、可以运行(发布后,删除\Tomcat 6.0\webapps\ssh\WebRoot\WEB-INF\lib下的asm-2.2.3.jar) 2、采用Struts1.2 + Spring2.5 + Hibernate3.2 整合开发 3、SSH入门级实例

    ecside+struts2+spring2.5+hibernate3.2

    标题 "ecside+struts2+spring2.5+hibernate3.2" 提及的是一个基于Java的Web开发框架组合,这个组合是企业级应用的常见选择,特别是对于那些需要强大持久层、业务层和表现层管理的项目。让我们逐一深入探讨这四个关键...

    struts2+spring2.5+hibernate3.2整合的简单例子

    这两天做的一个适合初学者的SSH框架整合的例子,相信对初学者会有一定帮助。

    struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 02部分

    struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 01部分 struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 02部分 大家只要将这两个部分的包全部下载下来,就可以搭建struts2 + spring + ...

    struts1.2+spring2.5+hibernate3.2学习实例(Eclipse)

    由于上传限制,lib包不能上传,大家可以下载spring2.5版本的支持库(下最大的那个zip包),全部加进去就行了,还有mysql的连接包,项目很简单,直接导入eclipse,就可以使用,包内有mysql的sql文件,框架已经搭好,...

    struts2+spring2.5+hibernate3.2 例子

    Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。下面将详细解释这三个框架以及它们如何协同工作。 **Struts2** Struts2是一个基于MVC(Model-View...

    Struts1.2+Spring2.5+Hibernate3.2框架搭建(一)

    在IT行业中,构建高效、可维护的企业级应用是至关重要的,..."Struts+hibernate+Spring的整合方法.doc"则可能深入探讨整合过程中的一些技巧和注意事项。这些文档对于学习和理解这个经典框架组合的集成过程非常有价值。

    struts2.1.6 +spring2.5 +hibernate3.2整合开发的 jar包 _ 01部分

    struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 01部分 struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 02部分 大家只要将这两个部分的包全部下载下来,就可以搭建struts2 + spring + ...

    ecside+struts2+spring2.5+hibernate3.2部分源代码

    标题 "ecside+struts2+spring2.5+hibernate3.2部分源代码" 描述了一个基于四个核心技术的项目,它们分别是ECSide、Struts2、Spring 2.5 和 Hibernate 3.2。这些技术是Java开发中的重要组件,尤其在构建企业级应用时...

Global site tag (gtag.js) - Google Analytics