1、Spring引入

点击左侧的Spring

Additional Libraries and Framework里面选择Spring,Web Application, Struts2, Application Server(选择tomcat就可以了),Hibernate;

点击Next,输入项目名称;完成后等待IDEA下载依赖包

idea SSH Remote Run 插件 idea ssh框架_spring

 

Next

测试spring是否可用

先创建TestService文件

idea SSH Remote Run 插件 idea ssh框架_idea_02

在web,WEB-INF下写入bean

idea SSH Remote Run 插件 idea ssh框架_struts_03

代码

<bean class="com.yan.test.TestService" id="testService">

    <property name="name" value="spring"></property>

</bean>

 

 

最后创建SpringTest文件

idea SSH Remote Run 插件 idea ssh框架_struts_04

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();
    }

}

 

最后出现

idea SSH Remote Run 插件 idea ssh框架_SSH_05

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,它们没有过多的依赖包下载,截图如下

idea SSH Remote Run 插件 idea ssh框架_struts_06

idea SSH Remote Run 插件 idea ssh框架_idea_07

 

在src下创建bean包,然后建立持久化类.这里主要是使用了IDEA的persistence下的OR映射功能;

 

建立数据库, 点击 IDEA最左下角的一个按钮,会弹出一些选项,然后选择Database,点击加号,选择Data Source -> MySQL, 进入后进行数据库的信息配置

idea SSH Remote Run 插件 idea ssh框架_java_08

idea SSH Remote Run 插件 idea ssh框架_java_09

idea SSH Remote Run 插件 idea ssh框架_SSH_10

idea SSH Remote Run 插件 idea ssh框架_java_11

 

为了可以使用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的话,可以下载查看下

idea SSH Remote Run 插件 idea ssh框架_spring_12

在Generate Persistence Mapping界面, "Choose Data Source"选择我们一开始新建的TESTDB数据库, "Package"选择bean; "Database Schema Mapping"点击我们 建立的user表, 相关截图如下

idea SSH Remote Run 插件 idea ssh框架_java_13

idea SSH Remote Run 插件 idea ssh框架_struts_14

Ok

建Service层

 

idea SSH Remote Run 插件 idea ssh框架_idea_15

代码:

public interface UserService {



    public void add(User user);



}

 

idea SSH Remote Run 插件 idea ssh框架_java_16

代码

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

 

idea SSH Remote Run 插件 idea ssh框架_idea_17

代码

<!--hibernate测试加入-->

<bean id="user" class="com.yan.service.serviceImpl.UserServiceImpl">

    <property name="sessionFactory" ref="sessionFactory"></property>

</bean>

 

进行测试,修改test包下的hibernateTest.java,代码如下

idea SSH Remote Run 插件 idea ssh框架_idea_18

代码

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);

    }



}

结果出现以下即成功

idea SSH Remote Run 插件 idea ssh框架_struts_19

idea SSH Remote Run 插件 idea ssh框架_SSH_20

3、struts2 引入并测试

要引入struts2,要先引入两个依赖,一个是struts2-spring-plugin-2.3.24, spring-web-3.0.5和log4j-1.2.14.jar; 对应前两个我们一样使用IDEA的maven功能进行下载,但是不要直接入我们的lib目录下,因为它会下载比较多的依赖;我们选择手工加入;先如下下载好,"Download to "不要打勾

idea SSH Remote Run 插件 idea ssh框架_java_21

struts2-spring-plugin和spring-web两个jar包从maven库中找出来,并且复制到项目lib下,并且右击两个jar包,"Add as Library";否则,web.xml中会报错,找不到jar包

idea SSH Remote Run 插件 idea ssh框架_spring_22

log4j-1.2.14就相对简单,直接打勾Download to 就可以了

 

修改web/WEB-INF/web.xml文件,引入struts2,配置如下

idea SSH Remote Run 插件 idea ssh框架_SSH_23

没有ng,删掉即可,可能是版本原因

idea SSH Remote Run 插件 idea ssh框架_java_24

<!--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文件

 

idea SSH Remote Run 插件 idea ssh框架_SSH_25

代码如下

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,内容如下

idea SSH Remote Run 插件 idea ssh框架_spring_26

<bean id="userAction" class="com.yan.action.UserAction">

    <property name="userService" ref="user"></property>

</bean>

Name 对应Action中的service 的实例对象

idea SSH Remote Run 插件 idea ssh框架_struts_27

在src下的struts.xml下进行如下修改,

idea SSH Remote Run 插件 idea ssh框架_SSH_28

<!-- 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中方法一致

idea SSH Remote Run 插件 idea ssh框架_idea_29

否则会报错

 

在web目录下加入index.jsp和success.jsp文件

idea SSH Remote Run 插件 idea ssh框架_idea_30

idea SSH Remote Run 插件 idea ssh框架_spring_31

 

特别注意:引入新的包的话,直接运行的话,可能会有包没有引入成功的问题,可以到File->Project Structure->Artifacts 查看,在右边的最下边如果出现一个fix 按钮的话,就点击,然后点击 add All

 

如果正常的话,点击运行,相关截图如下,图的最右边的运行按钮,记得將对象从Test切换为Tomcat

idea SSH Remote Run 插件 idea ssh框架_SSH_32