SpringBoot 演化(二)IDEA 创建ssh项目

第二阶段 ssh

同样使用 idea来创建,这次一样不引入 maven的概念,还是回顾为主,目的是了解spring的ioc机制

1)创建项目

File–>new project,然后左侧选择 Spring
在这里插入图片描述
勾选 create empty spring-config.xml,接着滚轮往下,选择struts2 和 hibernate
在这里插入图片描述
在这里插入图片描述
然后点击next,设置好项目名称后,结束
在这里插入图片描述

2)项目建好后,我们就开始来整合,先整合 hibernate吧,那我们先建个测试库

选择mysql
Create database demo;
Use demo;
CREATE TABLE userinfo (
id int(11) NOT NULL,
userName varchar(50) NOT NULL,
userPwd varchar(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后回到IDEA,选择最右侧的database(也可以从左下角的menu中进入)

在这里插入图片描述
进入database的界面后,选择+ ->database->MySQL
在这里插入图片描述
在弹出界面中输入内容
在这里插入图片描述
(其实,连接成功后,可以找到当前的mysql-connector.jar包)用以下方法:
在database面板上选中编辑,
在这里插入图片描述
在弹出界面上点击driver:mysql
在这里插入图片描述
然后点击右侧的加号
在这里插入图片描述
选择 customer jar,这时候,弹出的界面,就是jar包的位置,
当然,除了这个mysql-connector的jar包我们能这么找到,其他的jar,还要自己去找下,
本例子中,用到的jar包不多,但是spring-web.jar和strusts-spring-plugin.jar还是要下载的。
注意:看下 web.xml里面的StrutsPrepareAndExecuteFilter是不是路径错误,若是,去掉ng.

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

改为:

<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
3)整合hibernate

选择左侧的persitence,右键选中项后选择 Generate persistence mapping->By Database Schema
在这里插入图片描述
在弹出界面配置好数据源和sessionFactory,但是这里会有选不中sessionFactory的问题,如图:
在这里插入图片描述
第4步中选择 session Factory Bean,无法选中,那么打开spring-coonfig.xml,手动建立一个SessionFactory的bean

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"/>

这样,再回到上图,就能选中sessionFactory了。好多bug
都配置好后,点击ok。

在这里插入图片描述
可以看到spring-config.xml中已经生成了相应的内容,但是 driver_class这里明显有错误,所以引入需要的jar包

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="annotatedClasses">
        <list>
            <value>com.hkjs.entity.UserinfoEntity</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/demo</prop>
            <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
        </props>
    </property>
</bean>

引入jar 包选择 File->project Structure,选择libraries
在这里插入图片描述
点击+号,选择 java,选择 找到的 my-connector-java.jar 还有 spring-web.jar以及struts2-spring-plugin.jar然后点击ok。
在这里插入图片描述
这样spring-config.xml中 jdbc driver class 就能找到了。接着补全sessionFactory的配置项,

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="annotatedClasses">
        <list>
            <value>com.hkjs.entity.UserinfoEntity</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/demo</prop>
            <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
            <prop key="hibernate.connection.username">root</prop>
            <prop key="hibernate.connection.password">123456</prop>
            <prop key="current_session_context_class">thread</prop>
            <prop key="format_sql">true</prop>
            <prop key="show_sql">true</prop>
            <prop key="dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            <prop key="hbm2ddl.auto">update</prop>
        </props>
    </property>
</bean>

接着改下entity中的错误(又是bug)

在这里插入图片描述

只需要 右键Persistence 就好

在这里插入图片描述

弹出界面中分配下数据源

在这里插入图片描述
这样 hibernate 就集成好了

4)集成struts

先修改web.xml 把spring 监听器和配置文件路径设置好

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-config.xml</param-value>
</context-param>

然后开始 添加 strutsAction,由于涉及到数据库,所以这里我们建立一套Action,Service 和 DAO,然后交给 Spring来做依赖注入
在这里插入图片描述
UserAction:

package com.hkjs.action;

import com.hkjs.entity.UserinfoEntity;
import com.hkjs.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class UserAction extends ActionSupport implements ModelDriven<UserinfoEntity> {
    private UserinfoEntity userinfoEntity=new UserinfoEntity();
    private UserService userService;

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

    @Override
    public UserinfoEntity getModel() {
        return userinfoEntity;
    }

    public String register(){
        if(userService.Register(userinfoEntity)){
            return SUCCESS;
        }else
            return ERROR;
    }
}

UserDao:

package com.hkjs.dao;

import com.hkjs.entity.UserinfoEntity;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

public class UserDao {
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
    public  boolean register(UserinfoEntity user){
        System.out.print("begin UserDao");
        Session currentSession=sessionFactory.openSession();
        Transaction transaction=currentSession.beginTransaction();
        try{
            currentSession.save(user);
            transaction.commit();
            return true;
        }catch (Exception ex){
            ex.printStackTrace();
            transaction.rollback();
        }finally {
            currentSession.close();
            sessionFactory.close();
        }
        return false;
    }
}

UserinfoEntity:

package com.hkjs.entity;

import javax.persistence.*;
import java.util.Objects;

@Entity
@Table(name = "userinfo", schema = "demo")
public class UserinfoEntity {
    private int id;
    private String userName;
    private String userPwd;

    @Id
    @Column(name = "id", nullable = false)
    public int getId() {
        return id;
    }

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

    @Basic
    @Column(name = "userName", nullable = false, length = 50)
    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    @Basic
    @Column(name = "userPwd", nullable = false, length = 50)
    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        UserinfoEntity that = (UserinfoEntity) o;
        return id == that.id &&
                Objects.equals(userName, that.userName) &&
                Objects.equals(userPwd, that.userPwd);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, userName, userPwd);
    }
}

UserService:

package com.hkjs.service;

import com.hkjs.dao.UserDao;
import com.hkjs.entity.UserinfoEntity;

public class UserService {
    UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public  boolean Register(UserinfoEntity user){
        System.out.println("begin UserService");
        return userDao.register(user);
    }
}

接下来配置srping-config.xml来实现依赖注入:

<bean class="com.hkjs.dao.UserDao" id="userDao">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean class="com.hkjs.service.UserService" id="userService">
    <property name="userDao" ref="userDao"/>
</bean>
<bean class="com.hkjs.action.UserAction" id="userAction">
    <property name="userService" ref="userService"/>
</bean>

然后在 web目录下添加 register.jsp 和 result.jsp
register.jsp

<%--
  Created by IntelliJ IDEA.
  User: XYZH
  Date: 2019-07-02
  Time: 18:10
  To change this template use File | Settings | File Templates.
--%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Register</title>
</head>
<body>
<s:form namespace="/" theme="simple" method="POST" action="user_register">
    请输入姓名:<input name="userName" type="text"><br>
    请输入密码:<input name="userPwd" type="text"><br>
    <input type="submit" value="提交 ">
</s:form>
</body>
</html>
</html>

result.jsp

   <%--
  Created by IntelliJ IDEA.
  User: XYZH
  Date: 2019-07-02
  Time: 18:11
  To change this template use File | Settings | File Templates.
--%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Result</title>
</head>
<body>
Result:<s:property value="result"/>
</body>
</html>

最后配置下 struts.xml 完成跳转配置。

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <global-allowed-methods>regex:.*</global-allowed-methods>
        <action name="*_*" class="{1}Action" method="{2}">
            <result name="success">result.jsp</result>
            <result name="error">result.jsp</result>
        </action>
    </package>
</struts>
5)配置tomcat

Tomcat配置和上篇一致,就不再赘述了。
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值