2020idea配置ssh框架整合完整详细步骤(新手详细教程、非maven配置)
前言
在配置前请检查自己的各框架版本,因为不同版本的框架所需的依赖jar包可能会不同,依赖不正确会导致项目无法启动的问题,尽量选择同时期的版本。一定要注意自己的版本。
提示:本文参考博客链接: 参考博客链接.
一、要点说明
1、安装过程要一步一来,是有顺序的,不按照顺序有可能出错。
2、我使用的mac系统,和win系统操作可能不同,以及各类的路径可能不同。注意修改。
4、注意文中高亮部分。
3、文章较长,为新手准备,请耐心观看。
二、正文
1.预备工作
- 安装IDEA
- 安装MySQL
- 安装tomcat
- 建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进行测试
- 在src目录下新建一个test包(src->New->package)
- 在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引入与测试
- 使用Hibernate我们还要额外引入一些依赖引入一些,包我们可以直接使用IDEA的maven功能下载依赖包,然后直接引入;操作为 File->project Structure->Libraries->点击右侧的加号->From maven; 然后输入对应的包名就可以了;对于这个包我们可以直接打勾Download to,它们没有过多的依赖包下载,截图如下:
输入的包名为:org.apache.commons:commons-dbcp2:2.1
注:
1.记得引入数据库的驱动
2.这里problems会出现一个报错,记得去修复下problems。
- 在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&characterEncoding=utf8&useSSL=false&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&characterEncoding=utf8&useSSL=false&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;
}
}
- 在web/WEB-INF下的applicationContext.xml下加入一个新的bean,内容如下
<!--添加addteacheraction-->
<bean id="AddUserAction" class="action.AddUserAction">
<property name="UD" ref="UserDao"></property>
</bean>
- 在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,但是由于本人还没有学习,所以使用了这种笨方法。