Idea中如何搭建SSH框架以及导入对应的jar包

(Idea中如何搭建SSH框架以及导入对应的jar包)

  1. 步骤一:创建SSH项目
  2. 步骤二:测试Spring
  3. 步骤三:测试hibernate
  4. 步骤四:测试struts
  5. 出现的问题和解决办法

SSH框架-搭建步骤

在学习搭建SSH,网上看了很多资料,找到一个不错的,然后参考网上的那个博主写的,大概过程基本和他一样,个别不一样是根据我的实际情况做出改变的,链接https://blog.csdn.net/yj19961126/article/details/82668116,和https://blog.csdn.net/bpgdzfj/article/details/80940150感谢作者,文章最后我写了一些我在其过程中遇到的问题和解决方法,希望对你有所帮助。

步骤一:创建SSH项目

打开idea,点击file -> new -> project,出现如下界面:在这里插入图片描述
在Additional Libraries and Frameworks的栏目中,找到spring,struts和Hibernate(web application在勾选struts后会自动勾选),如下:
在这里插入图片描述
可以直接next,让idea自己下载所需要的配置文件,如果自己有下载的话,可以选择Download上面的Userlibrary,点击create,找到自己下载配置文件的目录,然后next。修改项目名称,点击finish就可以完成项目的创建了。注意下载依赖包的时间可能会有点长,耐心等待就好了。
在这里插入图片描述
创建好的项目目录是这样的:
在这里插入图片描述

步骤二:测试spring

我们先在src目录下建立包和类名如下,内容先不写,之后我会讲到:
在这里插入图片描述
OK,那我们现在来测试spring能否正常使用,往TestService.java中写入代码:

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

再往SpringTest.java里写入以下代码:

package com.dt.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();
    }

}

接着我们再web/WEB-INF目录下建立applicationContext.xml文件,并在里面写入bean(这个文件如果在创建项目时,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 class="com.dt.test.TestService" id="testService">
        <property name="name" value="spring"></property>
    </bean>
</beans>

然后我们点开SpringTest.java文件运行里面内容,控制台输出hello spring,测试成功:
在这里插入图片描述

步骤三:测试hibernate

这里我们要写一个JavaBean,命名为User,之前建好的,写入内容:

package com.dt.bean;

public class User {
    private int id;
    private int userId;
    private String name;
    private String phone;

    public User(){

    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
}

再对应地往它的配置文件User.hbm.xml写入内容:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.dt.bean.User" table="user">
        <id name="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="userId" type="java.lang.Integer">
        </property>
        <property name="name" type="java.lang.String">
        </property>
        <property name="phone" type="java.lang.String">
        </property>
    </class>
</hibernate-mapping>

然后就是引入hibernate所需要的包mysql-connector-java-5.1.47(这里数据库的连接时myqsl5,如果是mysql8,要换对应的连接jar包)还有commons-dbcp2-2.1和commons-pool2-2.4.1;可以通过点击file->project structure->libraries,点击靠左边的加号,如果自己下载有选择Java,然后找到包的目录点击ok,也可以通过点击fromMaven来下载
在这里插入图片描述
在搜索框中输入要下载的包,然后勾选Download to,点击ok即可
在这里插入图片描述
下载完后目录差不多是这样的,我的数据库mysql8连接是自己导入的:
在这里插入图片描述
然后把我们的数据库打开,并建立表(其实可以不用建,因为配置文件中可以通过配置让它自动生成,不过这里为了方面理解我先建好)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后我们让applicationContext.xml里写入配置,其接管hibernate的配置

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&amp;useSSL=false&amp;characterEncoding=UTF-8"></property>
        <property name="username" value="root"></property>
        <property name="password" value="123456dj"></property>
    </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.format_sql">true</prop>
                <prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&amp;useSSL=false&amp;characterEncoding=UTF-8</prop>
                <prop key="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.current_session_context_class">thread</prop>
            </props>
        </property>
        <property name="mappingLocations" value="classpath:com/dt/bean/User.hbm.xml"></property>
</bean>

接着我们开始写service,写一个UserService的接口,之前已经建立好,可以直接写入内容:

package com.dt.sevice;
import com.yan.bean.User;
public interface UserService {
    public void add(User user);
}

然后往UserServiceImpl.java中写入以下内容:

package com.dt.service.serviceimpl;

import com.dt.bean.User;
import com.dt.service.UserService;
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 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,往applicationContext.xml里添加:

<bean id="user" class="com.dt.service.serviceimpl.UserServiceImpl">
        <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

接着我们在test包下建立一个HibernateTest的Java文件,进行测试,写入代码:

package com.dj.test;

import com.dj.bean.User;

import com.dj.service.UserService;

import com.dj.service.impl.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);

    }
}

然后运行在控制台上看到sql语句,数据库中也成功插入信息,就表示测试成功啦:
在这里插入图片描述
在这里插入图片描述

步骤四:struts测试

要先引入两个依赖,一个是struts2-spring-plugin-2.3.24, spring-web-3.0.5和log4j-1.2.14.jar; 对应前两个可以使用IDEA的maven功能进行下载,但是不要直接入我们的lib目录下,因为它会下载比较多的依赖;先下载好,"Download to "不要打勾,然后我们在将之复制到lib目录下
在这里插入图片描述
然后我们修改web/WEB-INF/web.xml文件,加入struts2的配置

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:resource/log4j2.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<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>

接着我们建一个Action,这里我用的时模型驱动
在这里插入图片描述
向UserAction.java里写入代码:

package com.dt.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.dt.bean.User;
import com.dt.service.serviceimpl.UserServiceImpl;

public class UserAction extends ActionSupport implements ModelDriven {


    private User user = new User();
    private UserServiceImpl userService;
    @Override
    public User getModel() {
        return user;
    }
    public UserAction(){
        getModel().setUserId(1111);
        getModel().setName("dt");
        getModel().setPhone("4785");
    }
    @Override
    public String execute(){
        return SUCCESS;
    }
    public String actionAdd(){
        getModel().setUserId(1111);
        getModel().setName("dt");
        getModel().setPhone("4785");
        userService.add(user);
        return SUCCESS;
    }

    public UserServiceImpl getUserService() {
        return userService;
    }

    public void setUserService(UserServiceImpl userService) {
        this.userService = userService;
    }
}

然后我们在applicationContext.xml文件里添加一个新的bean,来表示这个Action,写入代码:

<bean id="userAction" class="com.dt.action.UserAction">
        <property name="userService" ref="user"></property>
</bean>

然后配置struts.xml文件,添加内容:

<constant name="struts.ui.theme" value="simple"></constant>
    <constant name="struts.objectFactory" value="spring"></constant>
    <package name="user" namespace="/user" extends="struts-default">
        <action name="actionadd" class="userAction" method="actionAdd">
            <result name="success">/success.jsp</result>
        </action>
</package>

然后我们在web目录下建立一个success.jsp文件内容为:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
success
</body>
</html>

在index.jsp中的body标签里添加一个表单:

<form action="/MySSHTest/user/actionadd" method="post">
    <input type="submit" value="turn up"/>
  </form> 

最后就是自己把tomcat给配置好,然后就,运行就可以了,怎么配置tomcat相信大家都懂,我就不写了,运行后的界面会出现一个按钮,点击跳转到success界面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同时数据库中也新插入了一条信息

恭喜你,成功完成!

出现的问题和解决办法

最后我讲一下整个过程中可能会出现的问题:
1 hibernate测试时报错说找不到user实体,那就请检查自己的applicatinContext.xml中的,下有没有写入,要不然它找不到user表

<bean id="sessionFactory"  class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="mappingLocations" value="classpath:com/dt/bean/User.hbm.xml"></property>
</bean>

2 log4j巴拉巴拉等等错误,这个我也没解决,不过不影响运行

3 测试struts时,无法启动项目等类似的错误,可以进入project structure 的libraries下,把sturts的libraries删掉,然后自己重新从本地导入,建议用struts2.3,因为idea自己下载的struts2.5可能会有依赖冲突,本人就是卡在这想了一天,难受,自己导入本地的就好了。
4 我用的是mysql8所以文档配置的是MySQL8的加载驱动和url,如果你用的5,自己改一下就好了,相信你也知道在哪改,就是在applicatinContext.xml里的bean 中dataSource 和sessionFactory里面改。
大概就这四个问题的解决方法吧,希望对你有所帮助。我也是参考网上的博主写的,大概过程基本和他一样,个别不一样是根据我的实际情况做出改变的,
参考博主链接https://blog.csdn.net/yj19961126/article/details/82668116。
参考博主链接:https://blog.csdn.net/bpgdzfj/article/details/80940150
感谢作者,我写这个纯粹是为了分享一些我在实践过程中的一些经历,希望对大家有所帮助!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值