博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 IDEA和Maven 整合SSH框架
阅读量:5917 次
发布时间:2019-06-19

本文共 11577 字,大约阅读时间需要 38 分钟。

 

1.创建web工程

一路next 下去就行。完成后,IDEA会自动构建maven工程。

 

2.创建如下项目结构

需要将 java文件夹设置为SourcesRoot目录,否则无法创建package

设置操作如下:选择文件夹,右击。

 

 

3.在pom.xml文件中引入框架包

4.0.0
com.ssh
ssh
war
1.0-SNAPSHOT
ssh Maven Webapp
http://maven.apache.org
junit
junit
3.8.1
test
org.hibernate
hibernate-core
5.2.12.Final
org.apache.struts
struts2-core
2.5.14.1
org.apache.struts
struts2-spring-plugin
2.5.14.1
org.springframework
spring-core
5.0.2.RELEASE
org.springframework
spring-context
5.0.2.RELEASE
org.springframework
spring-jdbc
5.0.2.RELEASE
org.springframework
spring-beans
5.0.2.RELEASE
org.springframework
spring-web
5.0.2.RELEASE
org.springframework
spring-expression
5.0.2.RELEASE
org.springframework
spring-orm
5.0.2.RELEASE
cglib
cglib-nodep
2.1_3
aspectj
aspectjrt
1.5.0
aspectj
aspectjweaver
1.5.0
mysql
mysql-connector-java
5.0.5
c3p0
c3p0
0.9.1.2
ssh

 

 4.配置web.xml文件

ssh
contextConfigLocation
classpath:spring.xml
struts2
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
struts2
/*
org.springframework.web.context.ContextLoaderListener

 

 5.配置spring的核心配置文件spring.xml,配置文件中扫描,注入各个javaBean,并且管理了hibernate的数据源和事务

 

  --- jdbc配置文件  jdbc.properties

mysql.driverClassName = com.mysql.jdbc.Drivermysql.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8mysql.username = rootmysql.password = 密码

 

50
5
5
20
50
20
org.hibernate.dialect.MySQLDialect
true
true
update
true
true
true
3
jdbc:mysql://localhost:3306/test
com.mysql.jdbc.Driver
com.ssh.model
classpath:com/ssh/model/User.hbm.xml

6.配置struts2的核心配置文件struts.xml

/test.jsp
m1,saveUser

 

7.使用IDEA生成数据库对应实体类和hibernate的映射文件

第一步:连接数据库

选择后边侧边栏的Database

第二步,生成映射文件

选中左边侧边栏的Persistence菜单

 

 等待生成映射文件,完成后,在对应的包 下面生成如下文件

 

USer 代码

/** * FileName: User * Author:   GET_CHEN * Date:     2017/12/13 13:45 * Description: */package com.ssh.model;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;@Entitypublic class User {    private int uid;    private String uname;    @Id    @Column(name = "uid")    public int getUid() {        return uid;    }    public void setUid(int uid) {        this.uid = uid;    }    @Basic    @Column(name = "uname")    public String getUname() {        return uname;    }    public void setUname(String uname) {        this.uname = uname;    }    @Override    public boolean equals(Object o) {        if (this == o) return true;        if (o == null || getClass() != o.getClass()) return false;        User user = (User) o;        if (uid != user.uid) return false;        if (uname != null ? !uname.equals(user.uname) : user.uname != null) return false;        return true;    }    @Override    public int hashCode() {        int result = uid;        result = 31 * result + (uname != null ? uname.hashCode() : 0);        return result;    }}

USer.hbm.xml文件内容如下:

 

 

8.完成mvc的架构中,各个部分的代码。

-- dao 层

 

接口UserDao代码

/** * FileName: UserDao * Author:   GET_CHEN * Date:     2017/12/13 11:34 * Description: */package com.ssh.dao;import com.ssh.model.User;public interface UserDao {    User getUser(Integer uid);    void saveUser(User user);}

实现类UserDaoImpl的代码

/** * FileName: UserDaoImpl * Author:   GET_CHEN * Date:     2017/12/13 11:57 * Description: */package com.ssh.dao;import com.ssh.model.User;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;@Repository("userDao")public class UserDaoImpl implements UserDao {    @Resource(name="sessionFactory")    private SessionFactory sessionFactory;    public User getUser(Integer uid) {        Session session = sessionFactory.getCurrentSession();        //当getCurrentSession所在的方法,或者调用该方法的方法绑定了事务之后,session就与当前线程绑定了,也就能通过currentSession来获取,否则就不能。        User user = session.get(User.class, uid);//        session.close();        return user;    }    public void saveUser(User user) {        Session session = sessionFactory.getCurrentSession();        session.save(user);        System.out.println("======="+user.getUname());        //使用getCurrentSession后,hibernate 自己维护session的关闭,写了反而会报错    }}

 

 

 -- service层

接口UserService的代码

/** * FileName: UserService * Author:   GET_CHEN * Date:     2017/12/13 11:31 * Description: */package com.ssh.service;import com.ssh.model.User;public interface UserService {    User getUser(Integer uid);    void saveUser(User user);}

实现类UserServiceImpl的代码

/** * FileName: UserServiceImpl * Author:   GET_CHEN * Date:     2017/12/13 11:32 * Description: */package com.ssh.service.impl;import com.ssh.dao.UserDao;import com.ssh.model.User;import com.ssh.service.UserService;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;@Service("userService")public class UserServiceImpl implements UserService {    //依赖Dao    @Resource    private UserDao userDao;    // 注入事务管理    @Transactional(rollbackFor={Exception.class, RuntimeException.class})    public User getUser(Integer uid) {        return userDao.getUser(uid);    }    @Transactional(rollbackFor={Exception.class, RuntimeException.class})    public void saveUser(User user) {        userDao.saveUser(user);//        throw new RuntimeException();//        userDao.saveUser(user);    }}

 

-- 控制层 Action

 

UserAction代码如下

 

/** * FileName: TestAction * Author:   GET_CHEN * Date:     2017/12/13 9:52 * Description: */package com.ssh.action;import com.opensymphony.xwork2.ActionSupport;import com.ssh.model.User;import com.ssh.service.UserService;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import javax.annotation.Resource;@Controller("userAction")@Scope("prototype")public class UserAction extends ActionSupport{     //定义存放到值栈中的对象    private User user;   //依赖service    @Resource    private UserService userService;       //实现要存放到值栈中对象的get方法    public User getUser() {        return user;    }     public String m1(){       user =  userService.getUser(1);        System.out.println(user.getUname());        return SUCCESS;    }      public String saveUser(){        User user = new User();        user.setUname("事务提交");        userService.saveUser(user);        return SUCCESS;    }}

 

-- view层test.jsp页面的代码

<%--  Created by IntelliJ IDEA.  User: GET_CHEN  Date: 2017/12/13  Time: 13:57  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%-- 引入struts2 的标签库--%><%@ taglib prefix="s" uri="/struts-tags" %>    ssh测试    <%-- 获取值栈中的user对象的uname的值--%>   用户名: 

 

9.部署项目到Tomcat

 -- 配置Tomcat

 选择上图中的Configure进入,配置tomcat路径

 

确认后,回到上级页面,选择Deployment菜单项,添加工程到Tomcat

 

 10.启动Tomcat,访问Action中的方法

-- 切换到Tomcat,点击绿色按钮启动Tomcat

-- 在地址栏输入,如下地址。结果如下。

 

------------------  今天分享到处

                                 ------------------By  GET_CHEN

 

转载于:https://www.cnblogs.com/getchen/p/8036709.html

你可能感兴趣的文章
使用Java解决兰顿蚂蚁问题
查看>>
CentOS6.8 安装 RabbitMQ
查看>>
HT图形组件设计之道(三)
查看>>
git directory structure
查看>>
数据库整理用到的
查看>>
Hadoop2 namenode 联邦 实验
查看>>
网站访问出现 ------ Can not write to cache files, please check directory ./cache/ .
查看>>
dubbo 资料
查看>>
Maven web 2.3转到3.0
查看>>
java对象序列化
查看>>
安装Python管理包pip,并利用pip安装 scrapy框架
查看>>
Jquery ui 和 jquery tools 这两个库能同时使用吗?
查看>>
关闭窗口(window.close)
查看>>
(转) windows下面安装Python3.6和pip终极教程
查看>>
ffmpeg安装ERROR: cuvid requested, but not all dependencies are satisfied: ffnvcodec
查看>>
沸点在百度
查看>>
java反射机制
查看>>
CentOS下nginx一键安装shell脚本
查看>>
[Node.js]node中的require到底是怎样工作的
查看>>
Cyber Physics System
查看>>