1:新建maven-archetupe-webapp项目
2:web.xml配置文件如下
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" 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"> <!-- springmvc 上下文监听器 ContextLoaderListener --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/*.xml</param-value> </context-param> <!-- springmvc 上下文监听器 ContextLoaderListener--> <!-- struts过滤器 --> <filter> <filter-name>SSH</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>SSH</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- struts过滤器 --> <!-- 过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 过滤器 --> <display-name>spring-ssh</display-name> </web-app>
3:struts.xml配置如下
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 请求参数的编码方式--> <constant name="struts.i18n.encoding" value="UTF-8"/> <!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开--> <constant name="struts.action.extension" value="action,do,htm,html"/> <!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开 --> <constant name="struts.configuration.xml.reload" value="true"/> <!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 --> <constant name="struts.devMode" value="false"/> <!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 --> <constant name="struts.serve.static.browserCache" value="false" /> <!-- 指定由spring负责action对象的创建 --> <constant name="struts.objectFactory" value="spring" /> <!-- 不用注解模式 <package name="book" namespace="/" extends="struts-default"> <action name="login" class="struts2.LoginAction" method="login"> <result name="success">../views/login.jsp</result> </action> </package> --> <!-- 是否开启动态方法调用--> <constant name="struts.enable.DynamicMethodInvocation" value="false"/> </struts>
4:spring.xml代码如下
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd" default-lazy-init="true"> <mvc:annotation-driven /> <context:component-scan base-package="com.xiaoji.ssh"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/> </context:component-scan> <context:property-placeholder location="classpath:property/jdbc.properties"/> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${database.driverClassName}" /> <property name="jdbcUrl" value="${database.url}" /> <property name="user" value="${database.username}" /> <property name="password" value="${database.password}" /> <!--连接池中保留的最大连接数。默认值: 15 --> <property name="maxPoolSize" value="20"/> <!-- 连接池中保留的最小连接数,默认为:3--> <property name="minPoolSize" value="2"/> <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3--> <property name="initialPoolSize" value="2"/> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 --> <property name="maxIdleTime" value="60"/> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 --> <property name="acquireIncrement" value="2"/> <!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次--> <property name="acquireRetryAttempts" value="0"/> <!--重新尝试的时间间隔,默认为:1000毫秒--> <property name="acquireRetryDelay" value="1000" /> <!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false--> <property name="breakAfterAcquireFailure" value="false"/> </bean> <!--定义Hibernate的SessionFactory --> <!-- SessionFactory使用的数据源为上面的数据源 --> <!-- 指定了Hibernate的映射文件和配置信息 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="annotatedClasses"> <list> <value>com.xiaoji.ssh.entity.Book</value> </list> </property> <property name="annotatedPackages"> <list> <value>com.xiaoji.ssh.entity</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="show_sql">true</prop> <prop key="hibernate.jdbc.batch_size">20</prop> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。 MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。 REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。 NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。 NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="save*" propagation="REQUIRED" /> <!-- <tx:method name="*" propagation="true" />--> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="allManagerMethod" expression="execution(* com.xiaoji.ssh.service.*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" /> </aop:config> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory" /> </bean> </beans>
5:jdbc.properties代码如下
#c3p0jdbc database.driverClassName=com.mysql.jdbc.Driver database.url=jdbc:mysql://127.0.0.1:3306/springtest?useUnicode=true&characterEncoding=UTF-8 database.username=root database.password=root
6:sql建表
CREATE TABLE `book` (
`book_id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
`description` varchar(100) default NULL,
PRIMARY KEY (`book_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7:创建entity,使用hibernate-jpa注解实现数据层
package com.xiaoji.ssh.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import static javax.persistence.GenerationType.IDENTITY; import javax.persistence.Id; import javax.persistence.Table; /** * Book entity. @author MyEclipse Persistence Tools */ @Entity @Table(name = "book", catalog = "springtest") public class Book implements java.io.Serializable { // Fields private Integer bookId; private String name; private String description; // Constructors /** default constructor */ public Book() { } /** full constructor */ public Book(String name, String description) { this.name = name; this.description = description; } // Property accessors @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "book_id", unique = true, nullable = false) public Integer getBookId() { return this.bookId; } public void setBookId(Integer bookId) { this.bookId = bookId; } @Column(name = "name", length = 50) public String getName() { return this.name; } public void setName(String name) { this.name = name; } @Column(name = "description", length = 100) public String getDescription() { return this.description; } public void setDescription(String description) { this.description = description; } }
8:创建dao
接口:
package com.xiaoji.ssh.dao; import java.util.List; import com.xiaoji.ssh.entity.Book; public interface BookDao{ public List<Book> getBookList(); public void saveBook(Book book); public void deleteBook(int bookId); public void updateBook(Book book); public Book getBookByBookId(int bookId); }
实现类:
package com.xiaoji.ssh.dao.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.stereotype.Repository; import com.xiaoji.ssh.dao.BookDao; import com.xiaoji.ssh.entity.Book; @Repository public class BookDaoImpl implements BookDao { private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } @Autowired public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } public List<Book> getBookList() { List<Book> list = (List<Book>)getHibernateTemplate().find("From Book"); return list; } public void saveBook(Book book) { getHibernateTemplate().save(book); } public void deleteBook(int bookId) { getHibernateTemplate().delete(getBookByBookId(bookId)); } public void updateBook(Book book) { // TODO Auto-generated method stub getHibernateTemplate().update(book); } public Book getBookByBookId(int bookId) { Book book = (Book)getHibernateTemplate().get(Book.class, bookId); return book; } }
9:创建service
接口:
package com.xiaoji.ssh.service; import java.util.List; import com.xiaoji.ssh.entity.Book; public interface BookService { public List<Book> getBookList(); public void saveBook(Book book); public void deleteBook(int bookId); public void updateBook(Book book); public Book getBookByBookId(int bookId); }
实现类:
package com.xiaoji.ssh.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.xiaoji.ssh.dao.BookDao; import com.xiaoji.ssh.entity.Book; import com.xiaoji.ssh.service.BookService; @Service public class BookServiceImpl implements BookService{ @Autowired private BookDao bookDao; @Override public List<Book> getBookList() { return bookDao.getBookList(); } @Override public void saveBook(Book book) { bookDao.saveBook(book); } @Override public void deleteBook(int bookId) { bookDao.deleteBook(bookId); } @Override public void updateBook(Book book) { bookDao.updateBook(book); } @Override public Book getBookByBookId(int bookId) { return bookDao.getBookByBookId(bookId); } }
10:action类源码如下
package com.xiaoji.ssh.action; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.ExceptionMapping; import org.apache.struts2.convention.annotation.ExceptionMappings; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.opensymphony.xwork2.ActionSupport; /** * Struts2基于注解的Action配置 * ParentPackage 继承父包 * Namespace命名空间 * Results跳转页面 * Action访问方法 */ @ParentPackage("struts-default") @Namespace("/book") @Results( { @Result(name = "success", location = "/views/main.jsp"), @Result(name = "error", location = "/views/error.jsp") }) @ExceptionMappings( { @ExceptionMapping(exception = "java.lange.RuntimeException", result = "error") }) public class BookAction extends ActionSupport{ private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Action(value="test") public String test(){ this.setUsername("strutsTest"); return SUCCESS; } @Action(value = "bookView", results = { @Result(name = "success", location = "/index.jsp") }) public String bookView(){ return SUCCESS; } }
11:pom.xml源码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xiaoji.ssh</groupId> <artifactId>spring-ssh</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>spring-ssh Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <spring.version>3.2.8.RELEASE</spring.version> <jdk.version>1.6</jdk.version> <hibernate.version>3.5.4-Final</hibernate.version> </properties> <dependencies> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.7.4</version> </dependency> <!-- spring --> <!-- hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.5.4-Final</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.1-api</artifactId> <version>1.0.0.Final</version> </dependency> <dependency> <groupId>springframework</groupId> <artifactId>spring-hibernate</artifactId> <version>1.2.6</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>3.5.4-Final</version> </dependency> <!-- 连接池包 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <!-- 链接池包 --> <!--hibernate --> <!--struts --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.16</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.16</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-convention-plugin</artifactId> <version>2.3.16</version> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.12.1.GA</version> </dependency> <dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.5.0</version> </dependency> <!--struts --> <!-- jsp servlet --> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>jsp-api</artifactId> <version>6.0.41</version> </dependency> <!-- jsp servlet --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version> </dependency> <!-- mysql --> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> </configuration> </plugin> </plugins> </build> </project>
12:忘记了还有个测试类
package com.xiaoji.ssh.dao; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.xiaoji.ssh.entity.Book; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:spring/*.xml" }) public class BookDaoTest { @Autowired private BookDao bookDao; @Test public void testGetBookList(){ System.out.println("xiaoji"); } @Test public void testSaveBookList(){ System.out.println(bookDao.getBookList()); } @Test public void testUpdateBookList(){ Book book = new Book(); book.setName("ssh3"); book.setDescription("ssh3"); bookDao.saveBook(book); System.out.println("ok"); } }
注解:在src/main/webapp下面建立个view目录,并新建main.jsp和error.jsp.如果觉的此文对你有帮助,请回复一下鼓励下我,以后我会发布更多类似文章。
下面贴上目录结构图:
相关推荐
"构建基于Maven的SSH原型项目"这个主题,旨在帮助初学者理解和掌握如何使用这些技术搭建一个基础的Web应用。 首先,Maven是Apache开发的一个项目管理工具,它通过一个项目对象模型(Project Object Model,POM)来...
"Maven搭建SSH项目"是一个基础的Java Web开发模板,通过Maven管理项目构建,结合Struts2处理请求,Spring管理依赖和事务,Hibernate进行数据操作。这样的组合可以快速构建出功能完备的应用,并易于维护和扩展。理解...
在Maven环境下搭建SSH项目框架,可以有效地管理和组织项目的构建、依赖和部署过程,提高开发效率。本教程将详细介绍如何在Maven下利用注解方式搭建SSH框架。 首先,我们需要了解SSH框架的组成部分: 1. Spring:这...
在这个基于Maven的SSH框架搭建实例中,我们将探讨如何利用这些框架以及Maven构建工具来搭建一个完整的Web项目。 首先,Spring框架是核心,它提供了依赖注入(DI)和面向切面编程(AOP)的功能,以实现松耦合和更好...
在Maven环境中搭建SSH框架,你需要先配置项目的pom.xml文件,引入所需的依赖。对于Struts2,Spring和Hibernate,你需要指定它们的版本号。例如: ```xml <groupId>org.apache.struts <artifactId>struts2-core...
项目描述 以前的一个学长让我帮着做的一个项目,vue花店,适合做手机端商城,需要Vue商城的,可以下载下去进行二开。用tomcat加载maven项目,数据库用户名密码要修改为自己的,前端vue如果端口被占用了...vue+maven+ssh
下面将详细介绍如何使用Eclipse集成开发环境和Maven构建工具来搭建SSH框架。 1. **Eclipse安装与配置** Eclipse是一款广泛使用的Java IDE,首先确保已经下载并安装了最新版本的Eclipse。在Eclipse中,我们需要安装...
整合SSH框架意味着在Maven项目中配置Struts2、Spring和Hibernate的依赖,以及相应的插件和配置文件。Struts2提供MVC模式的前端控制,Spring负责依赖注入和事务管理,Hibernate则处理对象关系映射,实现数据库操作。 ...
** Maven的简单使用以及Maven搭建SSH ** Maven是一个强大的Java项目管理工具,它能够帮助开发者构建、管理和部署项目。Maven通过使用一个统一的项目对象模型(Project Object Model,POM)来描述项目,并利用插件...
【标题】:“Maven搭建SSH工程” 在Java开发领域,SSH(Struts、Spring、Hibernate)是一个常见的Web应用开发框架组合。它结合了Struts的MVC设计模式、Spring的依赖注入以及Hibernate的对象关系映射功能,使得开发...
在搭建SSH框架时,首先,我们需要在Eclipse中创建一个Maven项目,配置pom.xml文件引入SSH框架和其他必要的依赖。然后,按照MVC设计模式划分项目结构,包括模型(Model)、视图(View)和控制器(Controller)三层。...
"Maven 搭建SSH框架"意味着我们将利用Maven这个项目管理工具来构建和管理SSH应用。Maven通过POM(项目对象模型)文件统一管理项目的依赖关系、构建过程和插件,使得开发、测试和部署更加规范和便捷。 以下是搭建SSH...
现在我们将深入探讨如何使用Maven来搭建一个基于SSH框架的项目。 首先,创建一个新的Maven项目。在IDE如IntelliJ IDEA或Eclipse中,选择“New -> Maven Project”,填写项目的基本信息,包括GroupId(通常代表公司...
在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,而Maven则是一个项目管理和综合工具,常用于构建和管理Java项目。本篇文章将深入探讨如何利用Maven搭建SSH框架,以及在这个过程中...
SSH+maven搭建的项目
Maven搭建SSH框架Demo,Maven是可以解决包依赖问题,在搭建SSH(struts2,spring3,hibernate)框架时不用考虑包的依赖问题,提高了开发效率,该demo已经完成框架的搭建,可以直接拿来使用
<listener-class>org.springframework.web.context.ContextLoaderListener </listener> <param-name>contextConfigLocation <param-value>classpath:applicationContext.xml </context-param>
Maven作为项目管理和构建工具,能有效地管理SSH框架的依赖,帮助开发者搭建环境。现在,我们将详细介绍如何使用Maven来搭建一个基于SSH的Java Web项目。 首先,我们需要确保已经安装了Java Development Kit (JDK) ...