JavaEE三大框架的整合
2019-05-14 14:01:39
注:应用软件为:Eclipse+MySQL;三大框架版本为:Struts2+Spring5+Hibernate5
第一步准备工作
三大框架所用的.jar下载,文件见如下链接:
整合目录结构:(打马赛克的地方有个人信息,望宝宝们见谅)
第二步 配置SSH三大框架
将以上下载的.jar文件复制粘贴到WebContent/WEB-INF/lib文件夹下
第三步 主要实现业务逻辑代码
注:dao.impl、service.impl包在dao、service包建完并且里面有.java文件后在建,以免发生dao、service包被dao.impl、service.impl包所覆盖。
注:dao.impl、service.impl包在dao、service包建完并且里面有.java文件后在建,以免发生dao、service包被dao.impl、service.impl包所覆盖。
注:dao.impl、service.impl包在dao、service包建完并且里面有.java文件后在建,以免发生dao、service包被dao.impl、service.impl包所覆盖。
(重要的事说三遍)
|--Src
| |--org.xxx.com.action
| | |--LoginAction.java
| | |--RegisterAction.java
| |--org.xxx.com.dao
| | |--UserDao.java(interface)
| |--org.xxx.com.dao.impl(implement)
| | |--UserDaoImpl.java(实现接口类)
| |--org.xxx.com.exception
| | |--AgeException.java
| |--org.xxx.com.po
| | |--User.java
| |--org.xxx.com.service
| | |--UserService.java(interface)
| |--org.xxx.com.service.impl(implement)
|_|_|_UserServiceImpl.java(实现接口类)
主要代码如下:不在多余解释,有啥看不懂可以发我邮箱,有时间会给宝宝们解决的
LoginAction.java
packageorg.xxx.com.action;
importjava.util.List;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.context.annotation.Scope;
importorg.springframework.stereotype.Controller;
importorg.xxx.com.po.User;
importorg.xxx.com.service.UserService;
@Controller()
@Scope("prototype")
publicclassLoginAction {
@Autowired
privateUserServiceuserService;
privateUseruser;
publicUser getUser() {
returnuser;
}
publicvoidsetUser(Useruser) {
this.user=user;
}
publicString login() {
Listu=userService.login(user);
if(u.size()>0) {
return"success";
}
else{
return"error";
}
}
}
RegisterAction.java
packagec.action;
importjava.util.List;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.context.annotation.Scope;
importorg.springframework.stereotype.Controller;
importorg.xxx.com.exception.AgeException;
importorg.xxx.com.po.User;
importorg.xxx.com.service.UserService;
importcom.opensymphony.xwork2.ActionContext;
@Controller()
@Scope("prototype")
publicclassRegisterAction {
@SuppressWarnings("unused")
@Autowired
privateUserServiceuserService;
privateUseruser;
publicUser getUser() {
returnuser;
}
publicvoidsetUser(Useruser) {
this.user=user;
}
publicString execute() {
if(user.getAge()>100) {
thrownewAgeException("年龄不符合要求");
}
userService.addUser(user);
return"success";
}
publicString updateUser() {
userService.updateUser(user);
return"success";
}
publicString deleteUser() {
userService.deleteUser(user);
return"success";
}
publicString queryUsers() {
Listlsit=userService.queryUsers();
ActionContextctx= ActionContext.getContext();
ctx.put("list",lsit);//表示request对象,ctx.getSession();
//这个方法可以得到session的东西,但是没有得到session对象,可以对此进行put,ctx.getSession().get(key)可以获取session中对象
//Map map=
return"success";
}
publicString getById() {
Useru=userService.getById(user.getId());
ActionContextctx= ActionContext.getContext();
ctx.put("u",u);//表示request对象,ctx.getSession();
return"success";
}
}
UserDao.java
packageorg.xxx.com.dao;
importjava.util.List;
importorg.xxx.com.po.User;
publicinterfaceUserDao {
publicInteger insertUser(Useruser);
publicList login(Useruser);
publicintupdateUser(Useruser);
publicintdeleteUser(Useruser);
publicList queryUsers();
publicUser getById(intid);
}
UserDaoImpl.java
packageorg.xxx.com.dao.impl;
importjava.util.List;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.query.Query;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Repository;
importorg.xxx.com.dao.UserDao;
importorg.xxx.com.po.User;
@Repository("userDao")
publicclassUserDaoImplimplementsUserDao {
@Autowired
privateSessionFactorySessionFactory;
privateSession getSession() {
returnSessionFactory.getCurrentSession();
}
@Override
publicInteger insertUser(Useruser) {
getSession().save(user);
returnnull;
}
@Override
publicList login(Useruser) {
Stringhql="select distinct u from User u where u.username=?0 and u.password=?1 ";
@SuppressWarnings("rawtypes")
Queryquery=getSession().createQuery(hql);
query.setParameter(0+"",user.getUsername());
query.setParameter(1+"",user.getPassword());
// query.setFirstResult(1).setMaxResults(1);
//System.out.println(query.list().size());
@SuppressWarnings("unchecked")
Listlist=query.list();
returnlist;
}
@Override
publicintupdateUser(Useruser) {
Stringhql="update User u set username=?0,password=?1 ,age=?2 where id=?3 ";
@SuppressWarnings("rawtypes")
Queryquery=getSession().createQuery(hql);
query.setParameter(0+"",user.getUsername());
query.setParameter(1+"",user.getPassword());
query.setParameter(2+"",user.getAge());
query.setParameter(3+"",user.getId());
intresult=query.executeUpdate();
returnresult;
}
@Override
publicintdeleteUser(Useruser) {
Stringhql="delete from User u where u.id=?0 ";
@SuppressWarnings("rawtypes")
Queryquery=getSession().createQuery(hql);
query.setParameter(0+"",user.getId());
intresult=query.executeUpdate();
returnresult;
}
@Override
publicList queryUsers() {
Stringhql="select distinct u from User u ";
@SuppressWarnings("rawtypes")
Queryquery=getSession().createQuery(hql);
@SuppressWarnings("unchecked")
Listlist=query.list();
returnlist;
}
@Override
publicUser getById(intid) {
Stringhql="select distinct u from User u where u.id=?0";
@SuppressWarnings("rawtypes")
Queryquery=getSession().createQuery(hql);
query.setParameter(0+"",id);
@SuppressWarnings("unchecked")
Listlist_u=query.list();
Userlist=null;
if(list_u.size()>0){
list=list_u.get(0);
}
returnlist;
}
}
AgeException
package org.xxx.com.exception;
@SuppressWarnings("serial")
publicclass AgeException extends RuntimeException {
public AgeException() {
super();
// TODO Auto-generated constructor stub
}
public AgeException(String message, Throwable cause, booleanenableSuppression, booleanwritableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
// TODO Auto-generated constructor stub
}
public AgeException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
public AgeException(String message) {
super(message);
// TODO Auto-generated constructor stub
}
public AgeException(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}
}
User.java
packageorg.xxx.com.po;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
importjavax.persistence.Table;
@Entity
@Table(name="tb_user")
publicclassUser {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
privateIntegerid;
privateStringusername;
privateStringpassword;
privateIntegerage;
publicInteger getId() {
returnid;
}
publicvoidsetId(Integerid) {
this.id=id;
}
publicString getUsername() {
returnusername;
}
publicvoidsetUsername(Stringusername) {
this.username=username;
}
publicString getPassword() {
returnpassword;
}
publicvoidsetPassword(Stringpassword) {
this.password=password;
}
publicInteger getAge() {
returnage;
}
publicvoidsetAge(Integerage) {
this.age=age;
}
publicUser() {
super();
}
publicUser(Stringusername, Stringpassword, Integerage) {
super();
this.username=username;
this.password=password;
this.age=age;
}
}
UserService.java
packageorg.xxx.com.service;
importjava.util.List;
importorg.xxx.com.po.User;
publicinterfaceUserService {
publicvoidaddUser(Useruser);
publicList login(Useruser);
publicintupdateUser(Useruser);
publicintdeleteUser(Useruser);
publicList queryUsers();
publicUser getById(intid);
}
UserServiceImpl.java
packageorg.xxx.com.service.impl;
importjava.util.List;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Service;
importorg.springframework.transaction.annotation.Transactional;
importorg.xxx.com.dao.UserDao;
importorg.xxx.com.po.User;
importorg.xxx.com.service.UserService;
@Service("userService")
publicclassUserServiceImplimplementsUserService {
@Autowired
privateUserDaouserDao;
@Transactional
publicvoidaddUser(Useruser) {
userDao.insertUser(user);
}
@Transactional(readOnly=true)
@Override
publicList login(Useruser) {
returnuserDao.login(user);
}
@Transactional
@Override
publicintupdateUser(Useruser) {
returnuserDao.updateUser(user);
}
@Transactional
@Override
publicintdeleteUser(Useruser) {
returnuserDao.deleteUser(user);
}
@Transactional(readOnly=true)
@Override
publicList queryUsers() {
//TODOAuto-generated method stub
returnuserDao.queryUsers();
}
@Transactional(readOnly=true)
@Override
publicUser getById(intid) {
returnuserDao.getById(id);
}
}
第四步 主要是配置文件
web.xml
struts.xml
applicationContext.xml
hibernate.cfg.xml
db.properties
接下来一个一个来配置(配置属性不多解释,有啥看不懂可以发我邮箱,有时间会给宝宝们解决的)
web.xml
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID"version="3.1">
Project_JavaEE_Lab_04
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
Struts2
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
Struts2
/*
struts.xml
/p>
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
class="org.xxx.com.action.RegisterAction">
/WEB-INF/content/welcome.jsp
/WEB-INF/content/register.jsp
class="org.xxx.com.action.LoginAction"method="login">
/WEB-INF/content/welcome.jsp
/WEB-INF/content/loginForm.jsp
/WEB-INF/content/listUser.jsp
/WEB-INF/content/error.jsp
class="org.xxx.com.action.RegisterAction"method="updateUser">
queryUsersAction
/WEB-INF/content/error.jsp
class="org.xxx.com.action.RegisterAction"method="deleteUser">
/WEB-INF/content/listUser.jsp
/WEB-INF/content/error.jsp
/WEB-INF/content/updateUser.jsp
/WEB-INF/content/error.jsp
applicationContext.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
base-package="org.xxx.com">
value="${jdbc.maxPoolSize}">
hibernate.cfg.xml
/p>
PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
true
update
org.hibernate.dialect.MySQL5InnoDBDialect
db.properties
jdbc.user=数据库用户名
jdbc.password=数据库密码
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/db_ssh(数据库)
jdbc.initPoolSize=5
jdbc.maxPoolSize=10
注db.properties可以以一下代码直接在hibernate.cfg.xml里面配置
com.mysql.jdbc.Driver
name="connection.url">jdbc:mysql://localhost:3306/ssh?useSSL=true
数据库用户名
数据库密码
20
1
5000
100
3000
2
true
name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect
第五步 Web前端
Regeister.jsp
LongForm.jsp
Welcome.jsp
ListUser.jsp
UpdataUser.jsp
Error.jsp
接下来一一写jsp页面
Regeister.jsp
pageEncoding="utf-8"%>
Insert title here用户名 | |
密码 | |
年龄 | |
LongForm.jsp
pageEncoding="UTF-8"%>
登录用户名 | |
密码 | |
CopyRight ©MrZhangxd版权所有,违者必究!
Welcome.jsp
pageEncoding="UTF-8"%>
Insert title here注册成功!!
用户名:
密码:
年龄:
ListUser.jsp
pageEncoding="UTF-8"%>
登录function update(id){
window.location.href="getByIdAction?user.id="+id;
}
顺序 | id | 用户名 | 密码 | 年龄 | ||
修改 | 删除 |
UpdataUser.jsp
pageEncoding="UTF-8"%>
Insert title here用户名 | |
密码 | |
年龄 | |
Error.jsp
pageEncoding="UTF-8"%>
访问错误页面访问错误
到此为止ssh三大框架整合完成
第六步 数据操作
创建数据库
Create database db_ssh;
创建tb_user表
CREATE TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`password` varchar(255) DEFAULT NULL,
`username` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
向tb_user表中插入数据
INSERT INTO `tb_user` VALUES ('1', 'xxx', '宝宝们', '永远18岁');
INSERT INTO `tb_user` VALUES ('2', 'xxx', '宝宝们', '永远18岁');
INSERT INTO `tb_user` VALUES ('3', 'xxx', '宝宝们', '永远18岁');
INSERT INTO `tb_user` VALUES ('4', 'xxx', '宝宝们', '永远18岁');
INSERT INTO `tb_user` VALUES ('5', 'xxx', '宝宝们', '永远18岁');
个人邮箱
QQ邮箱地址
2504900804@qq.com
outLook邮箱地址
Mr_Zhangxd@OutLook.com
163邮箱地址
18943008875@163.com