基于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 Connectionif (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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软蓝屏事件:网络安全的多维挑战与应对策略

一、引言 1. 事件概述&#xff1a;微软蓝屏事件的影响与范围 微软蓝屏事件&#xff0c;这一近期震动全球科技界的重大事件&#xff0c;起因于一次看似平常的软件更新。美国电脑安全技术公司“众击”发布的更新包中隐藏着一个致命的“缺陷”&#xff0c;这个缺陷如同潜伏的病毒…

函数图像是如何画出来的(LiveCharts2)

大火的人工智能本质上就是一些简单的函数的组合&#xff0c;比如f(x)kxb&#xff0c;只是可能不只有x,还会x1&#xff0c;x2&#xff0c;…xn&#xff0c;只是维数不同&#xff0c;当维数很多的时候自然就需要方程组才能求解&#xff0c;维数越多自然需要的算力就越多。于是就有…

简单小案例分析

一、容器和实例关系 <div class"app"><h1>Hello,{{name}}</h1> </div> <div class"app"><h1>Hello,{{name}}</h1> </div><script>//创建Vue实例new Vue({el:".app", //el用于指定当前V…

easyExcel 3.x以上版本导入数据后,再把错误信息导出,外加自定义RGB背景色、行高、宽度等

easyExcel 3.x以上版本导入数据后&#xff0c;再把错误信息导出&#xff0c;外加自定义RGB背景色 背景 由于项目中用的easypoi导入的数据量大了&#xff0c;会导致OOM的问题&#xff0c;所以要求更换为easyExcel框架做导入。话不多说&#xff0c;这里只做一个导入的示例&…

DP学习——享元模式

学而时习之&#xff0c;温故而知新。 享元模式 名词解析 有必要解释下“享元”两字&#xff0c;英文原文是flyweight pattern——轻量级模式&#xff0c;但是翻译过来的“享元”两字太牛逼了——褒贬不一&#xff0c;翻译的他妈都不认识。 享元的高雅在于: 享:共享/共用 元:…

VB中如何定义和使用数组

在VB&#xff08;Visual Basic&#xff09;中&#xff0c;数组是一种数据结构&#xff0c;用于存储相同类型的数据项集合。这些数据项可以通过索引&#xff08;通常是整数&#xff09;来访问。VB提供了多种方式来定义和使用数组。 定义数组 在VB中&#xff0c;你可以使用Dim语…

Retrieval-Augmented Evaluation方法评估模型幻觉

测试大模型的幻觉 Factuality prompt 1:建立factuality prompt测试集合 “Factuality prompt”是指用于引导语言模型生成与事实相符的文本的输入提示,它通过提供明确的问题或句子,帮助模型聚焦于生成准确的信息,从而提高生成内容的事实准确性。如果一个factuality promp…

DBeaver Ultimate 22.1.0 连接数据库(MySQL+Mongo+Clickhouse)

前言 继续书接上文 Docker Compose V2 安装常用数据库MySQLMongo&#xff0c;部署安装好之后我本来是找了一个web端的在线连接数据库的工具&#xff0c;但是使用过程中并不丝滑&#xff0c;最终还是选择了使用 DBeaver &#xff0c;然后发现 mongo 还需要许可&#xff0c;又折…

PyQt5 + selenium,自动票务工具,演唱会门票,学习使用

PyQt5 selenium&#xff1b;在damai工具的基础上加入了UI界面&#xff0c;并将应用做了打包工作&#xff0c;主要是方便不会/不想折腾环境的用户使用&#xff0c;抢票的核心代码来自由于原作者不再维护&#xff0c;自己修改了部分代码。 安装教程 解压安装包到任意位置&…

SpringBoot整合elasticsearch-java

一、依赖 系统使用的是ElasticSearch8.2.0 <dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.1.0</version> </dependency> 二、配置 1、yml文件配置 elastics…

Mongodb文档和数组的通配符索引

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第97篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…

新华三H3CNE网络工程师认证—VLAN间通信背景

VLAN间通信技术主要解决的是不同的VLAN之间如何通信。每一个广播域会有网段给IP进行命名&#xff0c;不同网段之间的通信本质上是不同广播域进行通信&#xff0c;通信会使用到网关地址。不同网段之间的通信&#xff0c;路由器的每个接口其实是对应一个广播域的&#xff0c;比如…

C# 控制台程序输出乱码

前面概要 首先有几个问题因为项目需要&#xff0c;和一个控制台程序做链接&#xff0c;控制台那边会输出用户选择的图片路径。但是我发现如果图片路径是中文&#xff0c;就会乱码&#xff0c;报错结果只需要把编码全部设置成utf-8就可以了注意Console 输出为utf-8 Console.Ou…

Python爬虫技术 第08节 Cookies和Session

在Web开发和爬虫技术中&#xff0c;Cookies和Session是两个关键概念&#xff0c;它们被用来维护客户端&#xff08;如浏览器&#xff09;和服务器之间的状态信息。这对于爬虫来说特别重要&#xff0c;因为许多现代网站依赖于这些机制来保持用户登录状态、个性化内容等。下面我将…

Boost搜索引擎项目相关介绍

Boost搜索引擎相关介绍&#xff1a; 首先&#xff0c;Boost库不具备搜索条件&#xff0c;所以我们这个项目借此实现搜索功能。 项目的核心就是以用户搜索的相关内容在目标数据中进行查找。 首先&#xff0c;我们面临的第一大难题就是目标数据&#xff0c;在这里目标数据就是Boo…

算法第十五天:leetcode19.删除链表的倒数第N个节点

一、删除链表的倒数第N个节点的题目描述与链接 19.删除链表的倒数第N个节点的链接如下表所示&#xff0c;您可直接复制下面网址进入力扣学习&#xff0c;在观看下面的内容之前您一定要先做一遍哦&#xff0c;以便让我印象更深刻&#xff01;&#xff01;!https://leetcode.cn/p…

用python写性能测试——用locust写性能脚本

前言&#xff1a; 由于版本不同&#xff0c;当前版本不需要通过继承TaskSet类&#xff0c;再赋值在HttpUser&#xff08;旧版本中的&#xff1a;HttpLoicust)类中&#xff0c;否则会报错空迭代器 TypeError: NoneType object is not iterable在命令行或者终端中运行 运行的命…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十六章 设备驱动IO控制

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【Qt】Qt容器和STL容器的区别

1、简述 Qt容器和STL容器略有不同,作为一个Qter,应该知道它们之间的异同。 Qt容器官网介绍:https://doc.qt.io/qt-5/containers.html STL容器官网介绍:https://zh.cppreference.com/w/cpp/container 2、Qt容器和STL容器的对应关系 注意:QList 与 std::list 无关,QSet …

Python - 开源库 ReportLab 库合并 CVS 和图像生成 PDF 文档

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/140281680 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Report…