java ee 框架_JavaEE三大框架的整合

本文详细介绍了如何整合Struts2、Spring5和Hibernate5三大JavaEE框架,包括项目的目录结构、关键代码实现、配置文件设置以及数据库操作。通过实例展示了从准备环境到编写前端页面的全过程,适合初学者参考学习。
摘要由CSDN通过智能技术生成

JavaEE三大框架的整合

2019-05-14   14:01:39

注:应用软件为:Eclipse+MySQL;三大框架版本为:Struts2+Spring5+Hibernate5

第一步准备工作

三大框架所用的.jar下载,文件见如下链接:

整合目录结构:(打马赛克的地方有个人信息,望宝宝们见谅)

1fd0d0fa53fd96f2726185d81591f17e.png

第二步 配置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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tephra旨在构建一个稳定、高效、易于集群、快速扩展的JavaEE开发框架。目前,Tephra已经具备了以下特性: 提供类级别的热更新,但仅建议在需要快速修正严重BUG、并且无法立即进行全更新时使用。 提供全冗余方式的缓存,自动在每个节点间同步缓存数据,而每个节点都仅从本地内存中获取缓存数据,从而提供高效的执行效率,并且当部分节点宕机时仍旧能正常提供服务。当然,也允许使用Redis提供统一的中心节点缓存。此特性可用于多节点负载时提供不停服更新。 提供数据库读写分离、及读负载均衡,并且允许配置多个不同的数据库,甚至允许在运行期间增加新的数据库配置,并自动映射ORM。允许执行标准的SQL或存储过,同时提供了一个简单、轻量的ORM工具,并集成Hibernate、MyBatis为复杂ORM需求提供支持。 提供MongoDB工具实现对NoSQL的支持,支持负载均衡。 提供轻量级、快速响应的控制器,允许设置最大并发峰值,以确保在突如其来的并发攻击后能继续正常提供服务;也允许设置单IP最大并发量,确保小量IP并发攻击时仍能正常提供服务。允许发布为HTTP(S)、WebSocket、Socket服务。 提供JavaScript脚本引擎支持,允许JavaScript与JavaBean自由交互,并且可以发布JavaScript为服务;以及使用Javacript作为复杂规则验证器。 提供Hadoop存取支持。 模块化开发,使用注解简化配置,增强代码可读性与维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值