基于JSP、java、Tomcat三者的项目实战--校园交易网(2)注册功能实现

技术支持:JAVA、JSP

服务器:TOMCAT 7.0.86

编程软件:IntelliJ IDEA 2021.1.3 x64


OK,那我们进入正题,随着前面一篇博客的尚未完结
基于JSP、java、Tomcat三者的项目实战--校园交易网(2)登录功能实现

我们继续注册功能的实现,注册功能我们会用到dao层,实体类(entity层)和util层

注册页面如下


 网页层

zhuce.jsp

<%@page contentType="text/html;charset=utf-8" pageEncoding="UTF-8" %>
<%@page import="java.util.*,java.text.*,entiy.*" %>
<!DOCTYPE html>
<html>
<head>
    <title>交易网注册</title>
    <script>
        function f2(){
            alert("确认注册?");
        }
    </script>
    <style>
        h1 {
            font-size: 40px;
            color: blanchedalmond;
            text-align: center;
            font-family: 'Courier New', Courier, monospace;
            font-style: italic;
        }
    </style>
</head>
<body>
<h1 name="top">交易网</h1>
<table align="center" cellspacing="0">
    <tr>
        <td>
            <table border="1" cellspacing="0">
                <form action="zhuce" method="post">
                    <tr>
                        <td>
                            <table cellpadding="30">
                                <tr>
                                    <td colspan="2" align="center"><strong>注册</strong></td>
                                </tr>
                                <tr>
                                    <td>昵称:
                                        <input type="text" id="name" name="name">
                                    </td>
                                </tr>
                                <tr>
                                    <td>帐号:
                                        <input type="text" id="idname" name="idname">(输入九位以内整数字)
                                    </td>
                                </tr>
                                <tr>
                                    <td>密码:
                                        <input type="password" id="pd" name="pd">
                                    </td>
                                </tr>
                                <tr>
                                    <td align="center" colspan="2">
                                        <input type="submit" value="注册" onclick="f2();">
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </form>
            </table>
        </td>
    </tr>
    <tr>
        <td align="right">关于交易网</td>
    </tr>
</table>
</body>
</html>

1. 页面结构和布局

  • HTML 结构:
    • 页面使用了基本的 HTML 结构,包括了 <!DOCTYPE html> 声明和 <html><head><body> 标签。
    • 页面标题为 "交易网注册",并在页面顶部展示了一个标题为 "交易网" 的大标题。
    • 使用了嵌入的 JavaScript 和 CSS 来增强页面功能和样式。

2. 技术功能

  • CSS 样式:

    • 使用了内嵌样式表 <style>,定义了 h1 元素的样式,包括字体大小、颜色、对齐方式和字体样式。
  • JavaScript 功能:

    • 在 <head> 部分定义了一个 JavaScript 函数 f2(),当用户点击注册按钮时,会弹出一个确认框,提醒用户确认注册。
  • HTML 表单:

    • 使用了 HTML 表单 <form> 来收集用户的注册信息。
    • 包含了昵称、帐号(应为 ID)、密码输入框。
    • 提供了一个注册按钮,点击时触发注册事件,并调用 f2() 函数进行确认。

3. 表单提交

  • 表单提交动作:
    • 表单的提交动作指向 action="zhuce",使用 POST 方法提交。
    • 当用户填写完信息后,点击注册按钮时,会将用户输入的数据发送到指定的 zhuce 接口或页面进行处理。

4. 连接服务

  • 服务连接说明:
    • 页面中的注册表单定义了 action="zhuce",这意味着提交的数据将会发送到 zhuce 这个服务端点。
    • 在实际开发中,你需要编写后端处理逻辑,接收这些数据并进行相应的处理,比如验证用户信息、保存到数据库等操作。
    • 根据实际情况,zhuce 可能是一个后端处理接口(比如 Servlet、Spring MVC 控制器等),负责接收 POST 请求,解析请求体中的数据,并执行相应的业务逻辑。

总的来说

这段代码实现了一个简单的注册页面,使用了基本的 HTML、CSS 和 JavaScript 技术。用户填写表单后,通过 POST 方法将数据发送到指定的后端服务(zhuce),以便后端处理注册逻辑。在真实环境中,你需要确保 zhuce 服务端点正确处理请求,并与前端页面配合良好,实现用户注册功能。


服务层 

zhuceServlet

package Servlet;

import dao.StudentDAO;
import entiy.Student;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class zhuceServlet extends HttpServlet {
    public void service(HttpServletRequest request,
                        HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        String idname = request.getParameter("idname");
        String pd = request.getParameter("pd");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        try {
            if (name == null || idname == null || pd == null ||
                    name.isEmpty() || idname.isEmpty() || pd.isEmpty()) {
                throw new IllegalArgumentException("参数不能为空");
            }

            StudentDAO dao = new StudentDAO();
            Student e1 = new Student();
            e1.setName(name);
            e1.setIdname(Integer.parseInt(idname));
            e1.setPd(pd);
            dao.save(e1);
            response.sendRedirect("denglu.jsp");
        } catch (NumberFormatException e) {
            out.println("ID必须是数字");
        } catch (IllegalArgumentException e) {
            out.println(e.getMessage());
        } catch (Exception e) {
            e.printStackTrace();
            out.println("系统繁忙,请稍后再试!");
        } finally {
            out.close();
        }
    }

}

不同于登录服务的实现,在这个方法内更为深刻的是我们在这里调用了我们的dao层和entity层

  • 服务方法 (service 方法) 解析:

    • service 方法重写了 HttpServlet 类的方法,处理 HTTP 请求。
    • request.setCharacterEncoding("utf-8") 设置请求的字符编码为 UTF-8,确保能正确处理中文字符。
    • 通过 request.getParameter 方法获取提交的表单参数 nameidnamepd
    • response.setContentType("text/html;charset=utf-8") 设置响应的内容类型为 HTML,并指定字符集为 UTF-8。
    • 在 try-catch 块中进行注册逻辑处理:
      • 首先检查参数是否为空,如果为空则抛出异常。
      • 创建 StudentDAO 的实例 dao,用于数据库操作。
      • 创建 Student 对象 e1,并设置其属性。
      • 调用 dao.save(e1) 方法将学生信息保存到数据库中。
      • 使用 response.sendRedirect("denglu.jsp") 实现注册成功后的重定向到登录页面。
    • catch 块捕获可能出现的异常:
      • NumberFormatException:当 idname 不是数字时抛出,输出 "ID必须是数字"。
      • IllegalArgumentException:当参数为空时抛出,输出异常消息。
      • Exception:捕获其他异常,并打印异常堆栈信息,并输出 "系统繁忙,请稍后再试!"。
    • finally 块确保 PrintWriter 被关闭,释放资源。

4. 总结

这段代码通过 Servlet 处理用户注册请求,验证用户提交的表单数据,将有效数据保存到数据库中,并在操作成功或失败时给予相应的响应。在实际应用中,需要确保 StudentDAO 类正确实现了数据库访问逻辑,并且 denglu.jsp 页面存在且正确配置。

服务层下调用的dao层

dao层的StudentDao中的save方法

我们仔细看服务层的代码

它只调用了dao层的save方法

则在dao中我们写下了许多的方法,我们调用的是dao层的save方法

public void save(Student e) throws Exception {
        Connection conn = null;
        PreparedStatement prep = null;
        try {
            conn = DBUtil.getConnection();
            prep = conn.prepareStatement(
                    "INSERT INTO users (name, idname, pd) VALUES (?, ?, ?)");
            prep.setString(1, e.getName());
            prep.setInt(2, e.getIdname());
            prep.setString(3, e.getPd());
            prep.executeUpdate();
        } catch (Exception e1) {
            e1.printStackTrace();
            throw e1;
        } finally {
            // Close PreparedStatement and Connection
            if (prep != null) {
                try {
                    prep.close();
                } catch (SQLException e2) {
                    e2.printStackTrace();
                }
            }
            DBUtil.close(conn);
        }
    }
save方法中又调用了util包中的DButil

DButil

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtil {
    public static Connection getConnection() throws Exception {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/sdjyy?" +
                            "useUnicode=true&characterEncoding=utf8","root","asd123"
            );
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }
        return conn;
    }
    public static void close(Connection conn){
        if(conn!=null){
            try {
                conn.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args)throws Exception{
        Connection conn = getConnection();
        System.out.println(conn);
    }
}

写到这里,服务层的代码才算闭环。


最后还要记得写上web.xml文件

   <servlet>
        <servlet-name>zhuce</servlet-name>
        <servlet-class>Servlet.zhuceServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>zhuce</servlet-name>
        <url-pattern>/zhuce</url-pattern>
    </servlet-mapping>

于此,注册功能便可以实现了

忘记说了


tomcat服务器的操作步骤是

点入run之后等待服务器的加载,他会自动跳出一个网页出来

你可以在网页上输入你的jsp网页的文件名,比如denglu.jsp,也可以输入你的web.xml的sevlet-name。

主页传送门

基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值