在IDEA中配置SSH环境

  • Post author:
  • Post category:其他




在IDEA中配置SSH环境



新建项目

在新建项目中选择

Spring

中的

Spring



Web



Hibernate

,设置为

稍后设置库

  1. 如果web中有

    struts

    选项直接选择,没有的话可以稍后设置。

  2. 如果左侧没有spring,可以按住

    Ctrl

    +

    Alt

    +

    Shift

    +

    /

    ,选择弹出界面的第一个选项,找到

    javaee.legacy.project.wizard

    选中即可。

image-20211115184246853



导入jar包

在项目中新建

lib

文件夹导入如图46个jar包,并添加为库。

image-20211116085232151
image-20211116085318605



配置数据库环境

创建一个数据库,添加一个person表如图的数据库环境。



配置Struts环境



配置 Struts 核心过滤器



web.xml

中配置struts核心过滤器

<?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_4_0.xsd"
         version="4.0">
    <!-- 配置Struts2核心过滤器 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>



添加 struts.xml 配置文件



src

中添加

struts.xml

文件,然后为struts添加文件集。

image-20211115201122174



添加 log4j.properties 文件

在 Hibernate 解压包中的 project\etc 路径下找到 log4j.properties 的文件,并复制到 src 源文件夹中。打开并编辑后,如下所示。

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file myLog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=E:/myLog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=info, stdout



配置Spring环境



添加 applicationContext.xml 文件



src

中添加

applicationContext.xml

文件,然后为spring添加应用程序上下文。

image-20211115201900667



配置 Spring 的监听器和过滤器



web.xml

中配置Spring的监听器和过滤器

<?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_4_0.xsd"
         version="4.0">
    <!-- 配置Struts2核心过滤器 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 监听器 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- 添加过滤器,延迟session关闭 -->
    <filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>
            org.springframework.orm.hibernate5.support.OpenSessionInViewFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>



配置 Hibernate 环境



src

中添加

hibernate.cfg.xml

文件。

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">
            jdbc:mysql://localhost:3306/filmsystem?serverTimezone=UTC
        </property>
        <property name="connection.driver_class">
            com.mysql.cj.jdbc.Driver
        </property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
    </session-factory>
</hibernate-configuration>



Spring 和 Hibernate 整合



创建实体类

package POJO;
import java.io.Serializable;

public class Person implements Serializable {
    private static final long serialVersionUID = -3541561917509006050L;
    private String id;
    private String name;
    public Person() {
    }
    public Person(String id,String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }



创建映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="POJO.Person" table="person">
        <id name="id" type="java.lang.String">
            <column name="id" length="32" />
            <generator class="assigned" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="50" not-null="true" />
        </property>
    </class>
</hibernate-mapping>



编写 Spring 的配置信息

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <!-- 1.1确定文件位置 -->
        <property name="configLocation" value="classpath:hibernate.cfg.xml"/>
        <!-- 1.2配置hbm.xml映射文件,mappingDirectoryLocationd表示本地映射文件的目录 -->
        <property name="mappingDirectoryLocations" value="classpath:POJO"/>
    </bean>
</beans>



编写测试类

package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import POJO.Person;
public class TestMerge {
    ClassPathXmlApplicationContext ctx;
    @Before
    public void loadCtx() {
        // 加载配置文件
        ctx = new ClassPathXmlApplicationContext(
                "applicationContext.xml");
    }
    @Test
    public void testHibernate() {
        SessionFactory sf = (SessionFactory) ctx.getBean("sessionFactory");
        Session session = sf.openSession();
        Transaction transaction = session.beginTransaction();
        session.save(new Person("1","用户1"));
        transaction.commit();
        session.close();
        sf.close();
    }
}



运行测试类

如图,测试成功!

image-20211116080349755



Spring 与 Struts2 整合



实现 Service 的配置



创建接口

package service;

public interface PersonService {
    public void say();
}



创建接口实现类

package service;

public class PersonServiceImpl implements PersonService{
    @Override
    public void say() {
        System.out.println("Service say hello");
    }
}



配置 Spring



applicationContext.xml

中配置

<bean id="PersonService" class="service.PersonServiceImpl"></bean>



验证配置

为了验证 Spring 的加载是否正确,可以在测试类 TestMerge.java 中创建一个名称为 testSpring 的方法进行测试。该方法代码如下所示

@Test
    public void testSpring(){
        PersonService ts = (PersonService)ctx.getBean("personService");
        ts.say();
    }

如图配置成功!

image-20211116082342536



实现 Action 的配置



创建 Action

package action;

import com.opensymphony.xwork2.ActionSupport;
import service.PersonService;

public class PersonAction extends ActionSupport {
    private static final long serialVersionUID = 1L;
    private PersonService personService;
    public PersonService getPersonService() {
        return personService;
    }
    public void setPersonService(PersonService personService) {
        this.personService = personService;
    }
    public String execute() {
        personService.say();
        return SUCCESS;
    }
}



配置 Struts2

<struts>
    <package name="test-package" namespace="/" extends="struts-default">
        <action name="person_*" class="action.PersonAction" method="{1}">
            <result name="success">/index.jsp</result>
        </action>
    </package>
</struts>



配置 Action 的 Bean 信息

<bean id="personAction" class="action.PersonAction"></bean>



查看测试结果

启动项目后,运行jsp页面,如下图:

QQ截图20211116084304

此时控制台输出

image-20211116084749958
说明配置成功!



项目结构



版权声明:本文为weixin_45756488原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。