`
王者之剑
  • 浏览: 194411 次
  • 性别: 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

相关推荐

Global site tag (gtag.js) - Google Analytics