---恢复内容开始---

要求如图:

本程序包括四个文件,一个显示界面的jsp文件,一个dao层文件,一个servlet层文件 一个连接数据库的文件

下面依次附上代码:

前端界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册界面</title>
<script type="text/javascript">
/*表单校验*/
function check() {
f=0;
var re = /^[\w\u4e00-\u9fa5]{6,8}$/; //判断字符串是否为数字和字母组合
var myPattern = new RegExp("^[a-zA-Z]"); // 以英文字母开头
var username = document.getElementById("username").value;
//alert(username.length);
if(!(username.length>5&&username.length<13)){
alert("用户名长度错误!");return false;
}
else if(!(re.test(username))){
alert("用户名组成内容错误!");return false;
}else if(!(myPattern.exec(username))){
alert("用户名开头必须是字母!");return false;
}
var password = document.getElementById("password").value;
var pas= /\w/;
if(password.length<8){f++;alert("密码长度必须大于8位!");return false;}
if(!(pas.test(password))){
alert("密码应由数字和字母组成!");return false;
}
var xuehao = document.getElementById("xuehao").value;
if(xuehao.length!=8){
alert("学号必须为8位!");return false;
}
if(xuehao[0]=='2'&&xuehao[1]=='0'&&xuehao[2]=='1'&&xuehao[3]=='8'){f++;}
else{
alert("学号必须以2018开头!");return false;
}
var mail = document.getElementById("mail").value;
if(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(mail)){f++;}
else{
alert("邮箱格式错误!");return false;
}
if(f>1){
alert("恭喜您已入住铁大软工大家(da)庭(keng)!");
return true;
}
else{
return false;
}
} </script>
</head>
<STYLE TYPE="text/css">
<!--
BODY {background-image:URL(1.png);
background-position:center;
background-repeat:no-repeat;
background-atachment:fixed;
}
table{margin:auto}
-->
</STYLE>
<body >
<form action="UserServlet?method=add" method="post" onsubmit="return check()"><br/><br/><br/><br/><br/><br/><br/>
<table frame= "box">
<tr>
<td>登入账号:</td>
<td><input type="text" id="username" name="username" value="" ></td>
<td>账号应为6到12位的英文或数字,下划线组成,且由英文开头.<td>
</tr>
<tr>
<td>登入密码:</td>
<td> <input type="password" id="password" name="password" value="" ></td>
<td>密码应由大于8位的数字和英文组成.<td>
</tr>
<tr>
<td>性&nbsp;&nbsp;&nbsp;&nbsp;别:</td>
<td>
<select id="sex" name="sex" >
<option>--请选择--</option>
<option value="男">男</option>
<option value="女">女</option>
</select>
</td>
</tr>
<tr>
<td>姓&nbsp;&nbsp;&nbsp;&nbsp;名:</td>
<td> <input type="text" name="name" value="" ></td>
</tr>
<tr>
<td>学&nbsp;&nbsp;&nbsp;&nbsp;号:</td>
<td> <input type="text" name="xuehao" id="xuehao" value="" ></td>
<td>学号应为2018开头的八位数字.<td>
<tr>
<td>电子邮件:</td>
<td> <input type="text" id="mail" name="mail" value="" ></td>
<td>电子邮件应符合其格式.<td>
</tr>
<tr>
<td>所在学院:</td>
<td> <input type="text" id="xueyuan" name="xueyuan" value="" ></td>
</tr>
<tr>
<td>所在系:</td>
<td> <input type="text" id="xi" name="xi" value="" ></td>
</tr>
<tr>
<td>所在班级:</td>
<td> <input type="text" id="ban" name="ban" value="" ></td>
</tr>
<tr>
<td>入学年份(届):</td>
<td>
<select id="year" name="year">
<option>--请选择--</option> <option value="2018">2018</option>
<option value="2017">2019</option>
<option value="2016">2018</option>
<option value="2015">2019</option>
<option value="2014">2018</option>
</select>
</td>
</tr>
<tr>
<td>生源地:</td>
<td>
<select name="address">
<option value ="河北省">河北省</option>
<option value ="北京市">北京市</option>
<option value ="天津市">天津市</option>
<option value ="武安市">武安市</option>
</select>
</td>
</tr>
<tr>
<td>备注:</td>
<td> <input type="text" id="beizhu" name="beizhu" value="" ></td>
</tr>
<tr>
<td><td>
<td> <button type="submit" >添&nbsp;&nbsp;&nbsp;&nbsp;加</button></td>
</tr>
</table>
</form>
</body>
</html>

servlet层文件:

package Servlet;
import java.io.IOException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import dao.Dao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UserServlet() {
super();
// TODO Auto-generated constructor stub
}
Dao dao = new Dao(); protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String method = req.getParameter("method");
System.out.println(method);
if ("add".equals(method)) {
System.out.println("ok");
String user = req.getParameter("username");
String password = req.getParameter("password");
String sex = req.getParameter("sex");
String name = req.getParameter("name");
String xuehao = req.getParameter("xuehao");
String mail = req.getParameter("mail");
String school = req.getParameter("xueyuan");
String xi = req.getParameter("xi");
String banji = req.getParameter("ban");
String nianfen = req.getParameter("year");
String place = req.getParameter("address");
String beizhu = req.getParameter("beizhu");
boolean pd=Dao.add(user, password, sex, name, xuehao, mail, school, xi, banji, nianfen, place, beizhu);
if(pd) {
req.setAttribute("message", "注册成功");
req.getRequestDispatcher("register.jsp").forward(req,resp);
}else {
req.setAttribute("message", "注册失败,请重新注册");
req.getRequestDispatcher("register.jsp").forward(req,resp);
}
} }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

dao层文件:

package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import database.DB;
public class Dao {
public static boolean add(String username,String password,String sex,String name,String xuehao,String mail,String school,String xi,String banji,String nianfen,String place,String beizhu) {
Connection conn = null;
PreparedStatement pstmt = null;
boolean pd = false;
System.out.println("add run!");
try {
//获取连接
conn = DB.getConn();
//编写语句
String sql = "insert into student values(?,?,?,?,?,?,?,?,?,?,?,?)";
//预编译
pstmt = conn.prepareStatement(sql);
//设置数据
pstmt.setString(1, username);
pstmt.setString(2, password);
pstmt.setString(3, sex);
pstmt.setString(4, name);
pstmt.setString(5, xuehao);
pstmt.setString(6, mail);
pstmt.setString(7, school);
pstmt.setString(8, xi);
pstmt.setString(9, banji);
pstmt.setString(10, nianfen);
pstmt.setString(11, place);
pstmt.setString(12, beizhu);
//执行
int res = pstmt.executeUpdate();
//判断
if(res>0) {
pd=true;
}else {
pd=false;
}
} catch (Exception e) {
e.printStackTrace();
}finally { DB.close(pstmt,conn);
}
return pd;
}
}

连接数据库的文件:

 package database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class DB {public static String db_url = "jdbc:mysql://localhost:3306/student?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8"; public static String db_user = "root";
public static String db_pass = "abc456"; public static Connection getConn () {
Connection conn = null; try {
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
conn = DriverManager.getConnection(db_url, db_user, db_pass);
} catch (Exception e) {
e.printStackTrace();
} return conn;
} /**
* 关闭连接
* @param state
* @param conn
*/
public static void close (Statement state, Connection conn) {
if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} public static void close (ResultSet rs, Statement state, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} public static void main(String[] args) throws SQLException {
Connection conn = getConn();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql ="select * from USER";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next()){
System.out.println("空");
}else{
System.out.println("不空");
}
} }

运行结果截图:

点击添加按钮后数据库数据界面:

由此可见,运行已成功

设计思路:

1.设计前端界面,并用jsp文件书写判别语句。用表格存储数据。

2.将表格存储的数据发送到servlet层,

3.servlet层发送到dao层进行数据库添加。

4.dao层调用DB层进行数据库连接。

遇到的问题:

在编写这个程序时,遇到了极其多的问题

最先出现的问题是,在进行创建web项目的时候,忘记了某个选项,导致少了web.xml文件,使得servlet层无法找到。

在进行查阅资料后,重新配置了servlet,但在添加后却没有发现jar包文件。在百度后发现需要把jar包放到tomcat下的lib文件夹才能调用。

解决了这个问题后,发现又提示数据库的编码方式不对,原来是没有设置好数据库的编码方式为UTF-8,在重新设置后,终于可用了。

通过这次过程,我意识到一些事情:

首先,就是在做东西前一定要理清思路,这次的问题就在于我做东西虎头虎脑的,没有理清在编写软件中的流程和细节问题。

再其次,就是对一些细小的事情并没有在意,导致最后发生很大的错误。

总的来说,这次学到了html中表格的写法,jsp的判断方法,数据库的连接方法。

java web第一次课堂测试1的更多相关文章

  1. java web sql注入测试(1)---概念概述

    在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还 ...

  2. java web sql注入测试(3)---现象分析

    那为什么出现以上问题呢?这是程序代码层控制不当导致的.如果web前端对输入数据控制严格,会对数据库进行操作的字符串,在客户端做敏感字符转义处理,或者在操作数据库的dao层,使用动态参数的sql,不使用 ...

  3. java web sql注入测试(2)---实例测试

    以下篇幅,用一个简单的实例说明如何进行测试. 功能:根据用户NAME删除用户,采用的是SQL拼接的方式,核心代码部分如下: public static void deleteByName(String ...

  4. java web sql注入测试(4)--如何防止该类缺陷发生

    检查用户输入的合法性,确信输入的内容只包含合法的数据,数据检查应当在客户端和服务器端都执行之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性.在客户端,攻击者完全有可能获得网页的源代码,修 ...

  5. HDFS第一次课堂测试

    起初在linux上想使用Map/Reduce来完成操作,发现需要导入的jar包过多,大概在6点左右写完程序却跑不起来,一直在找jar包,直接被卡死在这里. 从教室回来之后,发现好多人都是在window ...

  6. java web接口controller测试控制台输出乱码

    接口上配置:

  7. Mac下Intellij IDea发布Java Web项目详解五 开始测试

    测试前准备工作目录 Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intell ...

  8. 20145209刘一阳《JAVA程序设计》第九周课堂测试

    第九周课堂测试 1.域名解析服务器(ARP)负责将域名转化为IP地址,从而与主机连接.(B) A .true B .false 2.下列关于URL类的说法,正确的是(BD) A .URL 类自身可根据 ...

  9. 20145209刘一阳《JAVA程序设计》第一周课堂测试

    第一周课堂测试 1.下列不属于Java后继技术的是(D) A .Android B .JSP C .XML D .Python 2.下列关于Java语言特点的描述,正确的一组是(C) A .面向过程: ...

随机推荐

  1. VS“无法查找或打开PDB文件”是怎么回事?如何解决

    有时候,我们使用 VS(Visual Studio)编译程序时会出现“无法查找或打开PDB文件”的提示,并且此时程序会生成失败,无法运行,如下图所示: 大家不要惊慌,出现这种提示并不是代码写错了,而是 ...

  2. calloc函数的使用和对内存free的认识

    #include<stdlib.h> void *calloc(size_t n, size_t size): free(); 目前的理解:  n是多少个这样的size,这样的使用类似有f ...

  3. (c#)奇数值单元格的数量

    题目 解

  4. Flutter 中的表单

    一.Flutter 常用表单介绍   Flutter 中常见的表单有 TextField 单行文本框,TextField 多行文本框.CheckBox.Radio.Switch  CheckboxLi ...

  5. vue 实现todolist,包含添加,删除,统计,清空,隐藏功能

    vue 实现todolist,包含添加,删除,统计,清空,隐藏功能 添加:生成列表结构(v-for+数组).获取用户输入(v-model).通过回车新增数据(v-on+.enter) 删除:点击删除指 ...

  6. Day2 异常 日志 反射

    调用方如何获知调用失败的信息? 1.约定返回错误码.处理一个文件,如果返回0,表示成功,返回其他整数,表示约定的错误码: 2.在语言层面上提供一个异常处理机制 异常 异常是一种class,因此它本身带 ...

  7. angular iframe 加载失效解决办法已经自适应高度

    <iframe frameborder="0" id="iframe1"></iframe> $('#iframe1').attr('s ...

  8. select2多选框初始化默认值和获得值

    select2多选自带手动输入搜索功能,可怜我还查寻半天api 获得值: //chang函数获取选择的option $(".js-example").change(function ...

  9. Azure IoT Hub 十分钟入门系列 (4)- 实现从设备上传日志文件/图片到 Azure Storage

    本文主要分享一个案例: 10分钟内通过Device SDK上传文件到IoTHub B站视频:https://www.bilibili.com/video/av90224073/ 本文主要有如下内容: ...

  10. MyBatis-Spring整合之方式4

    直接删除Mybatis的配置文件,修改Beans.xml文件的sqlSessionFactory的参数内容,如下: <!--配置sqlSessionFactory--> <bean ...