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

时间:2022-11-08 18:53:35

本文描述的是框架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包截图:

[Java] SSH框架笔记_框架整合示例(一)
 接下来在jee中新建一个Dynamic Web Project,选择好运行环境:

[Java] SSH框架笔记_框架整合示例(一)
 相关文件组织如下:

[Java] SSH框架笔记_框架整合示例(一)
 源代码列举如下:

UserAction.java

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

User.java

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

UserService.java

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

log4j.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. ### direct messages to file hibernate.log ###
  7. #log4j.appender.file=org.apache.log4j.FileAppender
  8. #log4j.appender.file.File=hibernate.log
  9. #log4j.appender.file.layout=org.apache.log4j.PatternLayout
  10. #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
  11. ### set log levels - for more verbose logging change 'info' to 'debug' ###
  12. log4j.rootLogger=warn, stdout
  13. #log4j.logger.org.hibernate=info
  14. #log4j.logger.org.hibernate=debug
  15. ### log HQL query parser activity
  16. #log4j.logger.org.hibernate.hql.ast.AST=debug
  17. ### log just the SQL
  18. #log4j.logger.org.hibernate.SQL=debug
  19. ### log JDBC bind parameters ###
  20. #log4j.logger.org.hibernate.type=info
  21. #log4j.logger.org.hibernate.type=debug
  22. ### log schema export/update ###
  23. log4j.logger.org.hibernate.tool.hbm2ddl=debug
  24. ### log HQL parse trees
  25. #log4j.logger.org.hibernate.hql=debug
  26. ### log cache activity ###
  27. #log4j.logger.org.hibernate.cache=debug
  28. ### log transaction activity
  29. #log4j.logger.org.hibernate.transaction=debug
  30. ### log JDBC resource acquisition
  31. #log4j.logger.org.hibernate.jdbc=debug
  32. ### enable the following line if you want to track down connection ###
  33. ### leakages when using DriverManagerConnectionProvider ###
  34. #log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

struts.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

  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

  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

  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

  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. <bean id="dataSource" destroy-method="close"
  7. class="org.apache.commons.dbcp.BasicDataSource">
  8. <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  9. <property name="url" value="jdbc:mysql://localhost:9906/ssh" />
  10. <property name="username" value="root" />
  11. <property name="password" value="root" />
  12. </bean>
  13. <bean id="sessionFactory"
  14. class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  15. <property name="dataSource" ref="dataSource" />
  16. <property name="annotatedClasses">
  17. <list>
  18. <value>com.ssh.pojo.User</value>
  19. </list>
  20. </property>
  21. <property name="hibernateProperties">
  22. <value>
  23. hibernate.dialect=org.hibernate.dialect.MySQLDialect
  24. hibernate.show_sql=true
  25. hibernate.hbm2ddl.auto=update
  26. hibernate.current_session_context_class=thread
  27. </value>
  28. </property>
  29. </bean>
  30. <bean id="userService" class="com.ssh.service.UserService">
  31. <property name="factory" ref="sessionFactory"></property>
  32. </bean>
  33. <bean id="user" class="com.ssh.pojo.User"></bean>
  34. <bean id="userAction" class="com.ssh.action.UserAction">
  35. <property name="user" ref="user"></property>
  36. <property name="service" ref="userService"></property>
  37. </bean>
  38. </beans>

web.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. <display-name>ssh03_demo</display-name>
  7. <listener>
  8. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  9. </listener>
  10. <filter>
  11. <filter-name>struts2</filter-name>
  12. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  13. </filter>
  14. <filter-mapping>
  15. <filter-name>struts2</filter-name>
  16. <url-pattern>/*</url-pattern>
  17. </filter-mapping>
  18. <welcome-file-list>
  19. <welcome-file>index.html</welcome-file>
  20. <welcome-file>index.jsp</welcome-file>
  21. </welcome-file-list>
  22. </web-app>

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

[Java] SSH框架笔记_框架整合示例(一)
 至此,SSH框架整合完成。

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

[Java] SSH框架笔记_框架整合示例(一)的更多相关文章

  1. &lbrack;Java&rsqb; SSH框架笔记&lowbar;框架分析&plus;环境搭建&plus;实例源码下载

    首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...

  2. unity热更新AssetBundle框架设计&lowbar;框架篇

    目录 第1 章 : AssetBundle框架整体设计 课时1:实战项目开发AB技术问题分析 10:53 课时2:实战项目开发AB技术解决方案 10:24 课时3:AB框架整体设计方案详解 09:45 ...

  3. Python学习笔记&lowbar;一个Tkinter示例,使用FileDialog

    为了使用Python进行数据分析,编写一个图形界面,选择一个Excel文件(或CSV),然后进行后续处理. 一.本示例涵盖如下知识点: 1.FileDialog的使用 2.退出程序 3.消息提示框的示 ...

  4. &lbrack;Java&rsqb; SSH框架笔记&lowbar;SSH三大框架的工作原理及流程

    Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...

  5. Spring&lowbar;day04--课程安排&lowbar;回顾SSH框架知识点&lowbar;SSH框架整合思想

    Spring_day04 上节内容回顾 今天内容介绍 回顾SSH框架知识点 Hibernate框架 Struts2框架 Spring框架 SSH框架整合思想 整合struts2和spring框架 Sp ...

  6. java SSH框架详解(面试和学习都是最好的收藏资料)

    Java—SSH(MVC)1. 谈谈你mvc的理解MVC是Model—View—Controler的简称.即模型—视图—控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开.MVC ...

  7. JAVA&&num;160&semi;SSH&&num;160&semi;框架介绍

    SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架. Struts Struts是一个基于Sun J2EE平台的MVC框架, ...

  8. 【转】JAVA SSH 框架介绍

    转自:http://www.admin10000.com/document/150.html SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA W ...

  9. JAVA SSH 框架介绍

    SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架. Struts Struts是一个基于Sun J2EE平台的MVC框架, ...

随机推荐

  1. 分分钟知道tiles框架是干嘛的

    分分钟知道tiles框架是干嘛的 http://blog.sina.com.cn/s/blog_a123d4d50101792d.html参考上面的文章,简单明了.让你一下子就知道这个是用来做什么的. ...

  2. win7 共享的问题,&quot&semi;您可能没有权限使用网络资源&quot&semi;的解决办法

    重点来了,如果以上方法都不行的话,下面这个绝对有效,本人屡试不爽.1 打开受访者的guest权限2 开始--运行--gpedit.msc3 windows设置---安全设置--本地策略--用户权利指派 ...

  3. sqlServer2008 手工注入

    接着上一篇的<mysql手工注入> 参考:http://hi.baidu.com/ciqing_s/item/971bf994365130accc80e5ed http://hi.baid ...

  4. shell字符串操作之cut---实现字符串截取

    shell中(字符串截取) cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期发布) 2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切 ...

  5. Publish Web Site To IIS From VS

    Referenced: http://jingyan.baidu.com/article/7908e85ca6db2daf491ad27e.html 1. Install IIS on IIS ser ...

  6. 【阿里聚安全&&num;183&semi;安全周刊】阿里双11技术十二讲直播预约&vert;AWS S3配置错误曝光NSA陆军机密文件

    关键词:阿里双11技术十二讲直播丨雪人计划丨亚马逊AWS S3配置错误丨2018威胁预测丨MacOS漏洞丨智能风控平台MTEE3丨黑客窃取<权利的游戏>剧本|Android 8.1   本 ...

  7. 《软件开发者路线图:从学徒到高手》【PDF】下载

    <软件开发者路线图:从学徒到高手>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196346 图书简介 作为一名软件开发者,你在奋力 ...

  8. two Pass方法连通域检测

    原理: Two-Pass方法检测连通域的原理可参见这篇博客:http://blog.csdn.net/lichengyu/article/details/13986521. 参考下面动图,一目了然. ...

  9. 关于Q-LEARNING的优化

    Q-LEARNING 最后得到的一个图寻路最佳路径:---直接转化为图关于多顶点深度遍历热度传递 V(level+1) = 0.8 * Max(Vi(level))   这个方法可以在O时间收敛 原方 ...

  10. 深入理解JS this&comma;作用域

    深入理解JS this 阮一峰博客链接http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html this ...