1、Spring引入
点击左侧的Spring
Additional Libraries and Framework里面选择Spring,Web Application, Struts2, Application Server(选择tomcat就可以了),Hibernate;
点击Next,输入项目名称;完成后等待IDEA下载依赖包
Next
测试spring是否可用
先创建TestService文件
在web,WEB-INF下写入bean
代码
<bean class="com.yan.test.TestService" id="testService">
<property name="name" value="spring"></property>
</bean>
最后创建SpringTest文件
package com.yan.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class SpringTest {
public static void main(String[] args) {
ApplicationContext ac = new FileSystemXmlApplicationContext("web/WEB-INF/applicationContext.xml");
TestService ts = (TestService)ac.getBean("testService");
ts.hello();
}
}
最后出现
Spring测试成功
2、引入Hibernate
使用Hibernate,要引入的包有mysql-connector-java-5.1.47还有commons-dbcp2-2.1和commons-pool2-2.4.1;
可以直接使用IDEA的maven功能下载依赖包,然后直接引入;
操作为 File->project Structure->Libraries->点击右侧的加号->From maven; 然后输入对应的包名就可以了;对于这两个包我们可以直接打勾Download to,它们没有过多的依赖包下载,截图如下
在src下创建bean包,然后建立持久化类.这里主要是使用了IDEA的persistence下的OR映射功能;
建立数据库, 点击 IDEA最左下角的一个按钮,会弹出一些选项,然后选择Database,点击加号,选择Data Source -> MySQL, 进入后进行数据库的信息配置
为了可以使用Persistence的sessionFactory进行生成持久化映射,需要先配置applicationContext.xml,让其接管Hibernate的配置;操作如下,在applicationContext.xml里面加入如下的内容(password的值根据自己的数据库进行配置)如果没有进行这一步的话,在Persistence界面是不会出现sessionFactory的。
如果没有出现sessionFactory,参考
<!-- data connection -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"/>
<property name="password" value="123"/>
</bean>
<!-- session factory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/test</prop>
<prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
</props>
</property>
</bean>
进行持久化类生成,点击左下角的按钮, 选择Persistence; 在Persistence界面,选择下拉,右击sessionFactory->Generate Persistence Mapping; 相关截图如下;如果没有出现sessionFactory的话,可以下载查看下
在Generate Persistence Mapping界面, "Choose Data Source"选择我们一开始新建的TESTDB数据库, "Package"选择bean; "Database Schema Mapping"点击我们 建立的user表, 相关截图如下
Ok
建Service层
代码:
public interface UserService {
public void add(User user);
}
代码
public class UserServiceImpl implements UserService {
@Qualifier("sessionFactory")
@Autowired
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public void add(User user) {
Session s = sessionFactory.openSession();
Transaction tx= s.beginTransaction();
s.save(user);
tx.commit();
}
}
让Spring接管Hibernate的配置文件,时建立 bean
代码
<!--hibernate测试加入-->
<bean id="user" class="com.yan.service.serviceImpl.UserServiceImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
进行测试,修改test包下的hibernateTest.java,代码如下
代码
package com.yan.test;
import com.yan.bean.User;
import com.yan.service.UserService;
import com.yan.service.serviceImpl.UserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class HIbernateTest {
public static void main(String[] args) {
ApplicationContext ac = new FileSystemXmlApplicationContext("web/WEB-INF/applicationContext.xml");
UserService userService = (UserServiceImpl)ac.getBean("user");
User user = new User();
user.setUserId(1);
user.setName("yan");
user.setPhone("23123123");
userService.add(user);
}
}
结果出现以下即成功
3、struts2 引入并测试
要引入struts2,要先引入两个依赖,一个是struts2-spring-plugin-2.3.24, spring-web-3.0.5和log4j-1.2.14.jar; 对应前两个我们一样使用IDEA的maven功能进行下载,但是不要直接入我们的lib目录下,因为它会下载比较多的依赖;我们选择手工加入;先如下下载好,"Download to "不要打勾
struts2-spring-plugin和spring-web两个jar包从maven库中找出来,并且复制到项目lib下,并且右击两个jar包,"Add as Library";否则,web.xml中会报错,找不到jar包
log4j-1.2.14就相对简单,直接打勾Download to 就可以了
修改web/WEB-INF/web.xml文件,引入struts2,配置如下
没有ng,删掉即可,可能是版本原因
<!--struts2测试加入-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
建一个action, 在src下加一个action包,然后新建一个UserAction.java文件
代码如下
package com.yan.action;
import com.opensymphony.xwork2.ActionSupport;
import com.yan.bean.User;
import com.yan.service.serviceImpl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
public class UserAction extends ActionSupport {
private int userId;
private String userName;
private String userPhone;
@Autowired
private UserServiceImpl userService;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPhone() {
return userPhone;
}
public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}
public String add(){
User user = new User();
user.setUserId(getUserId());
user.setName(getUserName());
user.setPhone(getUserPhone());
userService.add(user);
return SUCCESS;
}
public void setUserService(UserServiceImpl userService) {
this.userService = userService;
}
}
在web/WEB-INF下的applicationContext.xml下加入一个新的bean,内容如下
<bean id="userAction" class="com.yan.action.UserAction">
<property name="userService" ref="user"></property>
</bean>
Name 对应Action中的service 的实例对象
在src下的struts.xml下进行如下修改,
<!-- struts的action配置文件 -->
<!-- 将action托管给spring -->
<constant name="struts.objectFactory" value="spring" />
<!-- 所有的action都应该放在对应的package下 -->
<!--action的class属性不再是具体的类,而是spring配置文件配置的bean id-->
<package name="user" namespace="/user" extends="struts-default">
<action name="add" class="userAction" method="add">
<result name="success">/success.jsp</result>
</action>
</package>
Method中add必须与Action中方法一致
否则会报错
在web目录下加入index.jsp和success.jsp文件
特别注意:引入新的包的话,直接运行的话,可能会有包没有引入成功的问题,可以到File->Project Structure->Artifacts 查看,在右边的最下边如果出现一个fix 按钮的话,就点击,然后点击 add All
如果正常的话,点击运行,相关截图如下,图的最右边的运行按钮,记得將对象从Test切换为Tomcat