《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)

《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)最近在看马士兵老师的关于Spring方面的视频,讲解的挺好的,到了Spring、Hibernate、struts2整合这里,由于是以例子的形式来对Spring+Hibernate+struts2这3大框架进行整合,因此,自己还跟着写代码的过程中,发现还是遇到了很多问题,因此,就记录下。特此说
摘要由CSDN通过智能技术生成

《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)

最近在看马士兵老师的关于Spring方面的视频,讲解的挺好的,到了Spring、Hibernate、struts2整合这里,由于是以例子的形式来对Spring+Hibernate+struts2这3大框架进行整合,因此,自己还跟着写代码的过程中,发现还是遇到了很多问题,因此,就记录下。

特此说明:本篇博文完全参考于马士兵老师的《Spring视频教程》

本篇博文均以如下这个例子一步一步的将Hibernate、struts、spring整合进来。

现在我们要实现这样一个功能:

有一个用户注册的页面,当用户进行在注册页面进行信息的填写之后,会出现如下的两种情况:

1、如果信息符合要求,则显示登录成功的页面并将用户信息写入到数据库中

2、如果信息不符合要求,则显示登录失败的页面。

本篇博文为Spring、Hibernate、struts2的整合经历的如下的阶段
1、两层架构的实现
2、两层架构+Entity+Service
3、三层架构:两层架构+Entity+Service+Hibernate(引入Hibernate)
4、N层+DAO层+抽象层
5、N层架构+Hibernate+struts(引入struts)
6、N层架构+Hibernate+struts+spring

下面就围绕上面的例子来慢慢将Spring、Hibernate和Struts进行整合进来。

1、两层架构的实现

我们首先采用两层架构来实现上面所描述的功能。

jsp+数据库的两层架构

具体设计如下:

实现代码

主要涉及到如下的4个jsp文件:

1、register.jsp

2、registerDeal.jsp

3、registerSuccess.jsp

4、registerFail.jsp

关于以上4个jsp文件的代码如下

1、register.jsp

这个文件主要就是一个表单form。具体内容如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">  
    <title>登陆界面</title>
  </head>

  <body>
    <form action="registerDeal.jsp" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name= "password"><br>
        确认密码:<input type="password" name="password2"><br>
        <input type="submit" value="提交">
    </form>
  </body>
</html>

2、registerDeal.jsp

这个文件包括主要的业务逻辑,主要用于接收register.jsp中用户输入的数据,以及和数据库打交道,进行数据的存储。下面的代码是我们比较熟悉的代码。

<%@page import="java.sql.Connection"%>
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String username=request.getParameter("username");
String password=request.getParameter("password");
String password2=request.getParameter("password2");

Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/spring", "root", "123456");

String sqlQuery="select count(*) from user where username=?";

PreparedStatement psQuery=conn.prepareStatement(sqlQuery);
psQuery.setString(1, username);
ResultSet rs=psQuery.executeQuery();
rs.next();
int count=rs.getInt(1);
//如果count>0  则跳转到registerFail.jsp页面  ,否则跳转到 registerSuccess.jsp页面并将用户的信息插入到数据库中
if(count>0){
    response.sendRedirect("registerFail.jsp");
    psQuery.close();
    conn.close();
    return;
}

String sqlInsert="insert into user values(null,?,?)";
PreparedStatement ps=conn.prepareStatement(sqlInsert);
ps.setString(1, username);
ps.setString(2,password);
ps.executeUpdate();
response.sendRedirect("registerSuccess.jsp");
psQuery.close();
ps.close();
conn.close();

%>

3、registerSuccess.jsp registerFail.jsp

这两个jsp文件比较简单,均只在页面中,显示Success / Fail信息。

例如:registerSuccess.jsp中body下的代码为:

<body>
        Success. <br>
</body>

要注意的几点是:

1、在MySQL数据库中建立名为spring的database和名为user的table

2、需要在项目中导入数据库驱动包。如下:

在浏览器中输入:http://localhost:8080/Spring_Register/register.jsp

会看到如下的登陆界面:

当我们在登陆界面数据信息后点击提交就会进行相应的跳转,以及将信息写入数据库中。

以上就通过jsp+数据库两层架构实现了这样一个简单的功能。

2、三层架构:两层架构+Entity+Service

上面所完成的所有功能均在jsp中实现,根本就没有体现面向对象编程的思维逻辑,因此,我们在上面的两层架构中引入Entity+Service来完成上面描述的功能。

2.1:定义一个User类

内容如下:

package com.register.model;

    public class User {
        private String username;
        private String password;
        //getter  setter方法

    }

2.2:定义一个UserManager类来管理User

内容如下:

import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;

    import com.register.model.User;

    public class UserManager {
    /*
     * 判断用户是否已在数据库中存在
     * */
    public boolean exists(User user) throws Exception{
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/spring", "root", "123456");

        String sqlQuery="select count(*) from user where username=?";
        PreparedStatement psQuer
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值