2020idea配置ssh框架整合完整详细步骤(新手详细教程、非maven配置)

2020idea配置ssh框架整合完整详细步骤(新手详细教程、非maven配置)


前言

在配置前请检查自己的各框架版本,因为不同版本的框架所需的依赖jar包可能会不同,依赖不正确会导致项目无法启动的问题,尽量选择同时期的版本。一定要注意自己的版本。
提示:本文参考博客链接: 参考博客链接.

一、要点说明

1、安装过程要一步一来,是有顺序的,不按照顺序有可能出错。
2、我使用的mac系统,和win系统操作可能不同,以及各类的路径可能不同。注意修改。
4、注意文中高亮部分。
3、文章较长,为新手准备,请耐心观看。

二、正文

1.预备工作

  1. 安装IDEA
  2. 安装MySQL
  3. 安装tomcat
  4. 建MySQL数据库和表
    注:mysql版本为8.0.19,tomcat为9.0.31,jdk版本为13.0.2

2.新建项目

1)先选择要创建的框架,先不要点next
在这里插入图片描述
2)选择下载的spring版本,这里使用的是spring4,我当处配的时候使用spring5出现了错误。
在这里插入图片描述
3)选择struct2:struct2下载链接
注:简易版和完整版都先下载下来。
简易版用来创建项目,完整版的部分jar包之后需要用到。
在这里插入图片描述

在这里插入图片描述
上一步点击create后,选择自己下载struct2简易版路径,然后选择其中所有jar包(可以对比一下自己的)。
在这里插入图片描述
4)选择Hibernate:直接下载就行,然后直接创建项目就行了
在这里插入图片描述
注:创建完项目后要前往file->project structure->problems中修复一下
在这里插入图片描述

3.spring引入与测试

1)新建完成工程后,为了测试我们的Spring是否引入成功,我们要对IOC进行测试

  1. 在src目录下新建一个test包(src->New->package)
  2. 在test包下面新建一个TestService.java,代码如下
package test;

public class TestService {
    private String name;
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getName() {
 
        return name;
    }
 
    public void hello()
    {
        System.out.println("hello "+ getName());
    }
}

3,在web/Web-INF目录下新建spring的配置文件applicationContext.xml文件(Web-INF右击->New->XML configuration file->Spring config),然后配置内容如下:

<?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 class="test.TestService" id="testService">
              <property name="name" value="spring"></property>
       </bean>
</beans>

注:直接创建该配置文件会报错:application context not configured for this file,报错如下图所示:
在这里插入图片描述
解决方法:可以观看此博客解决问题:解决方案博客链接

4,在前面的步骤我们已经新建了java类,同时建了bean,接下来我们就是要试试能否通过引用到这个新建的bean.在test包下面我们再建一个文件 test.java,代码如下

package test;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
 
/**
 * Created by kinthon on 17-3-31.
 */
public class Test {
    public static void main(String[] args)
    {
        ApplicationContext ac = new FileSystemXmlApplicationContext("web/WEB-INF/applicationContext.xml");
        TestService ts = (TestService)ac.getBean("testService");
        ts.hello();
    }
}

接下来就是直接测试Test的main函数,操作是右击编辑区,点击Run “Test.main()”,正常的话,应该会出现如下效果:
在这里插入图片描述

4.Hibernate引入与测试

  1. 使用Hibernate我们还要额外引入一些依赖引入一些,包我们可以直接使用IDEA的maven功能下载依赖包,然后直接引入;操作为 File->project Structure->Libraries->点击右侧的加号->From maven; 然后输入对应的包名就可以了;对于这个包我们可以直接打勾Download to,它们没有过多的依赖包下载,截图如下:
    输入的包名为:org.apache.commons:commons-dbcp2:2.1
    注:
    1.记得引入数据库的驱动
    2.这里problems会出现一个报错,记得去修复下problems。

    在这里插入图片描述
  2. 在src下创建bean包,然后建立持久化类.这里主要是使用了IDEA的persistence下的OR映射功能;
    a) 建立数据库, 点击 IDEA最左上角的一个按钮,会弹出一些选项,然后选择Database,点击加号,选择Data Source -> MySQL, 进入后进行数据库的信息配置,以你自己的机器为主; 相关截图如下:
    在这里插入图片描述
    在这里插入图片描述
    b) 为了可以使用Persistence的sessionFactory进行生成持久化映射,需要先配置applicationContext.xml,让其接管Hibernate的配置;操作如下,在applicationContext.xml里面加入如下的内容(password的值根据自己的数据库进行配置)如果没有进行这一步的话,在Persistence界面是不会出现sessionFactory的。
    注:需要更改自己的数据库url
<!-- data connection -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/movie_master?userUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC"></property>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>


    <!-- session factory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.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/movie_master</prop>
                <prop key="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</prop>
            </props>
        </property>
         </bean>

c) 进行持久化类生成,点击左下角的按钮, 选择Persistence; 在Persistence界面,选择下拉,右击sessionFactory->Generate Persistence Mapping; 相关截图如下;如果没有出现sessionFactory的话,可以下载查看下:https://pan.baidu.com/s/14mAq5BkkfNXxVs6-rpNsyg
在这里插入图片描述
c) 在Generate Persistence Mapping界面, "Choose Data Source"选择我们一开始新建的movie_master数据库, "Package"选择bean; "Database Schema Mapping"点击我们 建立的user表, 相关截图如下

在这里插入图片描述
d)建DAO层,在src目录下建dao包,在dao包下新建一个接口类User.java和实现类Userdao,代码如下
User.java

package dao;

import bean.UserEntity;

public interface User {
    public void add(UserEntity U);
}

UserDao.java

package dao;

import bean.UserEntity;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

public class UserDao implements User {
    @Qualifier("sessionFactory")
    @Autowired
    private SessionFactory sessionFactory;
    @Override
    public void add(UserEntity U) {
        Session s = sessionFactory.openSession();
        Transaction tx= s.beginTransaction();
        s.save(U);
        tx.commit();
    }
       //设置注入sessionFactory
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
}

e)让Spring接管Hibernate的配置文件,同时建立address服务的bean;目前applicationContext.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean class="test.TestService" id="testService">
        <property name="name" value="spring"></property>
    </bean>

    <!-- data connection -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/movie_master?userUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC"></property>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>


    <!-- session factory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.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/movie_master</prop>
                <prop key="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</prop>
            </props>
        </property>
        <property name="mappingLocations">
            <list>
                <value>classpath:bean/UserEntity.hbm.xml</value>
            </list>
        </property>
        <property name="annotatedClasses">
            <list>
                <value>bean.UserEntity</value>
            </list>
        </property>
    </bean>

    <!--hibernate测试加入-->
    <bean id="UserDao" class="dao.UserDao">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>


</beans>

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

package test;

import bean.UserEntity;
import dao.User;
import dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class Test {
    public static void main(String[] args) {
        ApplicationContext ac = new FileSystemXmlApplicationContext("web/WEB-INF/applicationContext.xml");
        User UD = (UserDao) ac.getBean("UserDao");
        UserEntity U = new UserEntity();
        U.setId(2);
        U.setUsername("lyf");
        U.setSex("女");
        U.setAge(18);
        U.setPassword("123");
        U.setPosition("aaa");
        U.setTelphone("123");
		UD.add(U);
    }
}

右击编辑器,点击"Run Test.main()"进行测试,正常的话,会出现
在这里插入图片描述
同时查看MySQL数据库,看看对应的movie_master下的user下有没有多一条id为2,name为lyf的记录.
在这里插入图片描述

5.Struct引入与测试

在这里就要用到之前创建项目前下载到的struct2完整版
1.依旧是引入依赖jar包,分别是struts2-spring-plugin-2.3.24, spring-web-3.0.5,这两个包在struct2完整版里有,通过file->project structure->Libraries,以上两个包通过Java导入。还需要导入一个包是:log4j:log4j:1.2.14,导入方法同Hibernate相同。引入步骤图示:
注:记得修复Problems
在这里插入图片描述
2) 修改web/WEB-INF/web.xml文件,引入struts2,配置如下

<?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">
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

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

</web-app>

3) 建一个action, 在src下加一个action包,然后新建一个AddUserAction.java文件,代码如下
import bean.UserEntity;
import com.opensymphony.xwork2.ActionSupport;
import dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;


public class AddUserAction extends ActionSupport {
    private int id;
    private String username;
    private String password;
    private String sex;
    private String position;
    private String telphone;
    private int age;


    @Autowired
    private UserDao UD;

    public void setId(int id) {
        this.id = id;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public void setTelphone(String telphone) {
        this.telphone = telphone;
    }

    public String add()
    {
        UserEntity al = new UserEntity();
        al.setId(3);
        al.setUsername("kaka");
        al.setSex("w");
        al.setAge(19);
        al.setPassword("123");
        al.setPosition("bbb");
		al.setTelphone("999");
        UD.add(al);
        return SUCCESS;
    }

    public void setUD(UserDao UD) {
        this.UD = UD;
    }
}
  1. 在web/WEB-INF下的applicationContext.xml下加入一个新的bean,内容如下
  <!--添加addteacheraction-->
    <bean id="AddUserAction" class="action.AddUserAction">
        <property name="UD" ref="UserDao"></property>
    </bean>
  1. 在src下的struts.xml下进行如下修改,
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- struts的action配置文件 -->
    <!-- 将action托管给spring -->
    <constant name="struts.objectFactory" value="spring" />

    <!-- 所有的action都应该放在对应的package下 -->
    <!--action的class属性不再是具体的类,而是spring配置文件配置的bean id-->
    <package name="userlist" namespace="/" extends="struts-default">
        <action name="add" class="AddUserAction" method="add">
            <result name="success">/success.jsp</result>
        </action>
        
    </package>
</struts>

6) 测试

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

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: zhaohaohao
  Date: 2020/12/16
  Time: 下午3:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form action="add" method="post">
    <input type="submit" value="turn up"/>
  </form>
  </body>
</html>

success.jsp

<%--
  Created by IntelliJ IDEA.
  User: zhaohaohao
  Date: 2020/12/16
  Time: 下午7:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
success
</body>
</html>

c)
最后就是自己把tomcat给配置好,然后就,运行就可以了,怎么配置tomcat相信大家都懂,我就不写了,运行后的界面会出现一个按钮,点击跳转到success界面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自动跳转到suceess界面,同时数据库中又多了一条记录,说明配置成功。

附上一张library中的所有jar包,但是不要一次性把包全部加载进去,要一步一步添加,否则测试tomcat的时候可能会无法启动项目。
在这里插入图片描述

总结

提示:这里对文章进行总结:

以上就是ssh框架整合的方法,在配置过程中别人说可以使用maven,但是由于本人还没有学习,所以使用了这种笨方法。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值