• [Java] SSH框架笔记_框架整合示例(一)


    本文描述的是框架SSH集成的示例,由于在这个过程中有一些小的细节容易被遗忘,特别撰写了一篇小的博文来记录这个过程,希望对自己以及后来者能够起到积极意义。

    本文中使用的框架和版本号为:

    struts-2.3.1.2、hibernate-3.6.10、spring-3.1.1

    其下载地址分别为:

    http://struts.apache.org/download.cgi#struts2312

    http://sourceforge.net/projects/hibernate/files/hibernate3/3.6.10.Final/

    http://www.springsource.org/download/community?project=Spring%2520Framework&version=3.1.1.RELEASE

    分别将其解压,需要注意的是本例中hibernate3还需要的是log4j,spring还需要commons-loging、commons-dbcp和commons-pool,在这里就不再赘述出其下载地址了。

    需要删除的重复包为:asm-commons-3.3.jar和javassist-3.11.0.GA.jar

    需要使用的JAR包截图:



     接下来在jee中新建一个Dynamic Web Project,选择好运行环境:



     相关文件组织如下:



     源代码列举如下:

    UserAction.java

    Java代码  收藏代码
    1. package com.ssh.action;import com.opensymphony.xwork2.ActionSupport;  
    2. import com.ssh.pojo.User;  
    3. import com.ssh.service.UserService;  
    4.   
    5. public class UserAction extends ActionSupport {  
    6.   
    7.     private static final long serialVersionUID = 1L;  
    8.   
    9.     private User user;  
    10.     private UserService service;  
    11.     public UserService getService() {  
    12.         return service;  
    13.     }  
    14.     public void setService(UserService service) {  
    15.         this.service = service;  
    16.     }  
    17.     public User getUser() {  
    18.         return user;  
    19.     }  
    20.     public void setUser(User user) {  
    21.         this.user = user;  
    22.     }  
    23.       
    24.     public String execute(){  
    25.         if (service.save(user)!=null) {  
    26.             return SUCCESS;  
    27.         }else {  
    28.             return ERROR;  
    29.         }  
    30.     }  
    31. }  

     User.java

    Java代码  收藏代码
    1. package com.ssh.pojo;  
    2.   
    3. import javax.persistence.Column;  
    4. import javax.persistence.Entity;  
    5. import javax.persistence.GeneratedValue;  
    6. import javax.persistence.Id;  
    7. import javax.persistence.Table;  
    8.   
    9. @Entity  
    10. @Table(name="user")  
    11. public class User {  
    12.     private Integer id;  
    13.     private String username;  
    14.     private String password;  
    15.     @Id  
    16.     @GeneratedValue  
    17.     @Column(name="hr_id")  
    18.     public Integer getId() {  
    19.         return id;  
    20.     }  
    21.     public void setId(Integer id) {  
    22.         this.id = id;  
    23.     }  
    24.     public String getUsername() {  
    25.         return username;  
    26.     }  
    27.     public void setUsername(String username) {  
    28.         this.username = username;  
    29.     }  
    30.     public String getPassword() {  
    31.         return password;  
    32.     }  
    33.     public void setPassword(String password) {  
    34.         this.password = password;  
    35.     }  
    36. }  

     UserService.java

    Java代码  收藏代码
    1. package com.ssh.service;  
    2.   
    3. import org.hibernate.Session;  
    4. import org.hibernate.SessionFactory;  
    5.   
    6. import com.ssh.pojo.User;  
    7.   
    8. public class UserService {  
    9.     private SessionFactory factory = null;  
    10.     public SessionFactory getFactory() {  
    11.         return factory;  
    12.     }  
    13.     public void setFactory(SessionFactory factory) {  
    14.         this.factory = factory;  
    15.     }  
    16.     public User save(User user){  
    17.         Session session = factory.getCurrentSession();  
    18.         session.beginTransaction();  
    19.         session.save(user);  
    20.         session.getTransaction().commit();  
    21.         return user;  
    22.     }  
    23. }  

     log4j.properties

    Properties代码  收藏代码
    1. ### direct log messages to stdout ###  
    2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
    3. log4j.appender.stdout.Target=System.out  
    4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
    5. log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n  
    6.   
    7. ### direct messages to file hibernate.log ###  
    8. #log4j.appender.file=org.apache.log4j.FileAppender  
    9. #log4j.appender.file.File=hibernate.log  
    10. #log4j.appender.file.layout=org.apache.log4j.PatternLayout  
    11. #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n  
    12.   
    13. ### set log levels - for more verbose logging change 'info' to 'debug' ###  
    14.   
    15. log4j.rootLogger=warn, stdout  
    16.   
    17. #log4j.logger.org.hibernate=info  
    18. #log4j.logger.org.hibernate=debug  
    19.   
    20. ### log HQL query parser activity  
    21. #log4j.logger.org.hibernate.hql.ast.AST=debug  
    22.   
    23. ### log just the SQL  
    24. #log4j.logger.org.hibernate.SQL=debug  
    25.   
    26. ### log JDBC bind parameters ###  
    27. #log4j.logger.org.hibernate.type=info  
    28. #log4j.logger.org.hibernate.type=debug  
    29.   
    30. ### log schema export/update ###  
    31. log4j.logger.org.hibernate.tool.hbm2ddl=debug  
    32.   
    33. ### log HQL parse trees  
    34. #log4j.logger.org.hibernate.hql=debug  
    35.   
    36. ### log cache activity ###  
    37. #log4j.logger.org.hibernate.cache=debug  
    38.   
    39. ### log transaction activity  
    40. #log4j.logger.org.hibernate.transaction=debug  
    41.   
    42. ### log JDBC resource acquisition  
    43. #log4j.logger.org.hibernate.jdbc=debug  
    44.   
    45. ### enable the following line if you want to track down connection ###  
    46. ### leakages when using DriverManagerConnectionProvider ###  
    47. #log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace  

     struts.xml

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2. <!DOCTYPE struts PUBLIC  
    3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
    4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
    5. <struts>  
    6.     <constant name="struts.devMode" value="true" />  
    7.     <package name="ssh" extends="struts-default">  
    8.         <action name="loginApp" class="userAction">  
    9.             <result name="error">/WEB-INF/content/error.jsp</result>  
    10.             <result name="success">/WEB-INF/content/success.jsp</result>  
    11.         </action>  
    12.         <action name="*">  
    13.             <result>/WEB-INF/content/{1}.jsp</result>  
    14.         </action>  
    15.     </package>  
    16. </struts>  

     error.jsp

    Html代码  收藏代码
    1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
    2.     pageEncoding="UTF-8"%>  
    3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    4. <html>  
    5. <head>  
    6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    7. <title>出错页面</title>  
    8. </head>  
    9. <body>  
    10. 对不起,出错了  
    11. </body>  
    12. </html>  

     register.jsp

    Html代码  收藏代码
    1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
    2.     pageEncoding="UTF-8"%>  
    3. <%@ taglib prefix="s" uri="/struts-tags" %>  
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    5. <html>  
    6. <head>  
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    8. <title>注册页面</title>  
    9. </head>  
    10. <body>  
    11. 欢迎注册,请在这里输入必要的注册信息:  
    12. <s:form action="loginApp" method="post">  
    13.     <s:textfield name="user.username" label="用户名"></s:textfield>  
    14.     <s:password name="user.password" label="密码"></s:password>  
    15.     <s:submit label="提交"></s:submit>  
    16. </s:form>  
    17. </body>  
    18. </html>  

     success.jsp

    Html代码  收藏代码
    1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
    2.     pageEncoding="UTF-8"%>  
    3. <%@ taglib prefix="s" uri="/struts-tags" %>  
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    5. <html>  
    6. <head>  
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    8. <title>成功页面</title>  
    9. </head>  
    10. <body>  
    11. 成功了  
    12. </body>  
    13. </html>  

     applicationContext.xml

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    3.     xmlns="http://www.springframework.org/schema/beans"  
    4.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
    5.     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">  
    6.   
    7.     <bean id="dataSource" destroy-method="close"  
    8.         class="org.apache.commons.dbcp.BasicDataSource">  
    9.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
    10.         <property name="url" value="jdbc:mysql://localhost:9906/ssh" />  
    11.         <property name="username" value="root" />  
    12.         <property name="password" value="root" />  
    13.     </bean>  
    14.       
    15.     <bean id="sessionFactory"  
    16.         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
    17.         <property name="dataSource" ref="dataSource" />  
    18.         <property name="annotatedClasses">  
    19.             <list>  
    20.                 <value>com.ssh.pojo.User</value>  
    21.             </list>  
    22.         </property>  
    23.         <property name="hibernateProperties">  
    24.             <value>  
    25.                 hibernate.dialect=org.hibernate.dialect.MySQLDialect  
    26.                 hibernate.show_sql=true  
    27.                 hibernate.hbm2ddl.auto=update  
    28.                 hibernate.current_session_context_class=thread  
    29.             </value>  
    30.         </property>  
    31.     </bean>  
    32.       
    33.     <bean id="userService" class="com.ssh.service.UserService">  
    34.         <property name="factory" ref="sessionFactory"></property>  
    35.     </bean>  
    36.     <bean id="user" class="com.ssh.pojo.User"></bean>  
    37.     <bean id="userAction" class="com.ssh.action.UserAction">  
    38.         <property name="user" ref="user"></property>  
    39.         <property name="service" ref="userService"></property>  
    40.     </bean>  
    41. </beans>  

     web.xml

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    3.     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
    4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
    5.     id="WebApp_ID" version="3.0">  
    6.   
    7.     <display-name>ssh03_demo</display-name>  
    8.   
    9.     <listener>  
    10.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    11.     </listener>  
    12.     <filter>  
    13.         <filter-name>struts2</filter-name>  
    14.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
    15.     </filter>  
    16.     <filter-mapping>  
    17.         <filter-name>struts2</filter-name>  
    18.         <url-pattern>/*</url-pattern>  
    19.     </filter-mapping>  
    20.   
    21.     <welcome-file-list>  
    22.         <welcome-file>index.html</welcome-file>  
    23.         <welcome-file>index.jsp</welcome-file>  
    24.     </welcome-file-list>  
    25. </web-app>  

     然后在Tomcat7上部署该项目即可,在浏览器中输入地址:http://localhost:8080/ssh_demo/register即可进入下面的页面:



     至此,SSH框架整合完成。

    相关源码和jar包放在附件中。

    --------------------------------------

    欢迎您,进入 我系程序猿 的cnBlog博客。

    你不能改变你的过去,但你可以让你的未来变得更美好。一旦时间浪费了,生命就浪费了。

    You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.

    --------------------------------------

    分享到QQ空间  

  • 相关阅读:
    BZOJ3779: 重组病毒
    BZOJ3112 [ZJOI2013]防守战线
    BZOJ4011 [HNOI2015]落忆枫音
    BZOJ2726 [SDOI2012]任务安排
    BZOJ1492 [NOI2007]货币兑换
    BZOJ1597 [USACO2008]土地购买
    BZOJ3611 [HEOI2014]大工程
    BZOJ3991 [SDOI2015]寻宝游戏
    BZOJ3675 [APIO2014]序列分割
    BZOJ1010 [HNOI2008]玩具装箱
  • 原文地址:https://www.cnblogs.com/jqmtony/p/3947677.html
Copyright © 2020-2023  润新知