首先,我的版本ideaIU-2017.3.4,
一、新建一个项目project
1、1)create new project
2)file ——》new ——》project
2、这里选择spring,struts2,hibernate
1)选择spring ——>spring,勾选create empty spring-config.xml文件,download是自动选择的(它可以自动生成spring必要的jar包,你可以点击 Configure.. 查看里面的jar包)选择好后,再选择JavaEE下的Web Application ——>struts2 , 往下拉 ,选择hibernate,选择 finnish
创建项目名和你要存放的路径,我的为ssh和E:\JavaWeb相关\ssh,然后finnish
等待系统自动为你下载相关的jar包
下载完成后的目录,lib里面为jar包
3、生成web.xml
在项目的右上角,如下图的地方,点击(Project Structure)
选择Modules——》Web——》+ ——》web.xml,就会弹出下图,点击OK,再点击底部的Apply
然后,还在该窗口下,点击ssh——》Source ——》WEB-INF ——》鼠标右键 ——》New Floder..
创建两个文件夹 classes 和 lib
然后选择Path ——》Use module compile output path,把路径改成下面这样的,然后Apply,OK 退出
4、加入另外的相关的jar包到ssh\lib文件和WEB-INF\lib文件
(注意看,你自己项目有没有下载完成,如若没有,你需要手动添加)
1 ) ssh\lib
注意:手动添加的jar包,需要右击——》还需要回到project structure,将这些jar包添加到artifact
struts2-spring-plugin-2.3.34.jar是在struts-2.3.34.zip解压后的lib目录中,是spring整合struts2用到的
mysql-connector-java-8.0.12.jar是连接数据库用到的
spring-web-4.3.12.RELEASE.jar这个是项目自动下载缺失的spring需要的jar包
下面是hibernate缺少的c3p0连接池用到的jar包(在hibernate.zip解压后的lib/optional/c3p0/*)
2 ) WEB-INF\lib
将src\lib下的jar包copy到WEB-INF\lib中,另外再加入如下的三个jar包,然后到project Structure,将该lib添加到artifact
3)回到project Structure——》module——》ssh——》dependencies——》+ ——》JARs or Directory, 然后选择你的项目下的WEB-INF\lib文件,点击OK
选择Jar Directory ——》OK,Apply
配置Artifact,在下图右击的地方,鼠标右击,选择+Add ——》Web Application:Exploded ——》From module..
就会弹出下图,点击ssh,OK
得到下面的图后,点击Apply
然后,点击ssh:war exploded,在窗口右下角点击 Fix.. ,选择第二个Add all miss dependencies of 'ssh' to the artifact,
(当然,你可以选择第一个,一个一个的添加jar包到 artifact )
如果创建WEB-INF\lib这个文件,当运行项目时会报下面的错误
二、代码配置
在spring-config.xml中加入下面的代码(是spring管理hibernate的),引入的外部文件是放在src下的jdbc.properties
<!-- 引入外部的属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 配置Hibernate相关属性 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置Hibernate的属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 加载Hibernate中的映射文件 -->
<property name="mappingResources">
<list>
<value></value>
</list>
</property>
</bean>
jdbc.properties(连接数据库用的信息)
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_book?serverTimezone=GMT%2B8
jdbc.username=root
jdbc.password=123456
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--spring的配置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-config.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--struts的配置-->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
注意jsp页面中提交表单最好使用struts-tags(如下)
<s:form>
<table>
<tr>
<td>用户名:</td>
<td><s:textfield value="" name="#实体类的参数"/> </td>
</tr>
<tr>
<td>密码:</td>
<td><s:textfield value="" name="#实体类的参数"/> </td>
</tr>
<tr>
<td colspan="2">
<s:submit value="登陆"/><s:reset value="重置"/>
</td>
</tr>
</table>
</s:form>
创建src目录,下面是我写好的一个项目的src目录,dao(数据库操作)、action、domain(实体)、service(业务层)
准备工作的大致就是这样的