Java web+数据库 登录界面
1.Java web 项目的文件结构

Dao.java:书写java程序与数据库连接的代码
1 package com.dao; 2 3 import java.sql.Connection; 4 import java.sql.Statement; 5 6 import com.bean.uBean; 7 import com.db.DB; 8 9 public class Dao { 10 public boolean add(uBean bean) { 11 String tablename = "zhangziyi1";//表的名字 12 DB db=new DB(); 13 Connection con = db.getCon(); 14 15 try { 16 String sql="insert into "+tablename+"(zhanghao,password,sex,name,id,postbox,xueyuan,xi,class_,time,area,beizhu) values ('"+bean.getZhanghao()+"','"+bean.getPassword()+"','"+bean.getSex()+"','"+bean.getName()+"','"+bean.getId()+"','"+bean.getPostbox()+"','"+bean.getXueyuan()+"','"+bean.getXi()+"','"+bean.getClass_()+"','"+bean.getTime()+"','"+bean.getArea()+"','"+bean.getBeizhu()+"')"; 17 //以上为SQL语句,表示向数据库中添加数据
Statement stm = con.createStatement(); 18 System.out.println(sql); 19 stm.execute(sql); 20 db.close(stm, con); 21 System.out.println("add success"); 22 }catch(Exception e) { 23 e.printStackTrace(); 24 System.out.println("add false"); 25 return false; 26 } 27 System.out.println("add true"); 28 return true; 29 } 30 }
DB.java 书写操作数据库的代码,包括增删改查,对数据库的操作通过SQL语句来实现
1 package com.db; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 import com.sun.corba.se.impl.ior.GenericTaggedComponent; 10 11 public class DB { 12 private static String mysqlname = "zhangziyi1";//新建的库的名字 13 private static Connection con; 14 private static Statement sta; 15 private static ResultSet re; 16 private static String coursename = "com.mysql.jdbc.Driver"; 17 private static String url = "jdbc:mysql://127.0.0.1:3306/"+mysqlname+"?useSSL=false&characterEncoding=utf8";//固定格式 18 19 20 public static Connection getCon() { 21 try { 22 Class.forName(coursename); 23 System.out.println("成功"); 24 }catch(ClassNotFoundException e) { 25 e.printStackTrace(); 26 } 27 try { 28 con = DriverManager.getConnection(url,"root","zhangziyi1670"); 29 System.out.println("成功"); 30 }catch(Exception e){ 31 e.printStackTrace(); 32 con = null; 33 } 34 return con; 35 } 36 37 public static void close(Statement sta,Connection connection) { 38 if(sta!=null) { 39 try { 40 sta.close(); 41 }catch(SQLException e) { 42 e.printStackTrace(); 43 } 44 } 45 if(connection!=null) { 46 try { 47 connection.close(); 48 }catch(SQLException e) { 49 e.printStackTrace(); 50 } 51 } 52 } 53 54 //关闭 55 public static void close(ResultSet re,Statement sta,Connection connection) { 56 if(re!=null) { 57 try { 58 re.close(); 59 }catch(SQLException e) { 60 e.printStackTrace(); 61 } 62 } 63 if(sta!=null) { 64 try { 65 sta.close(); 66 }catch(SQLException e) { 67 e.printStackTrace(); 68 } 69 } 70 if(connection!=null) { 71 try { 72 connection.close(); 73 }catch(SQLException e) { 74 e.printStackTrace(); 75 } 76 } 77 } 78 public static void main(String[] args) 79 { 80 getCon(); 81 } 82 }
uBean.java 将所有数据封装成一个类,定义get()和set()函数,方便操作。
package com.bean;
public class uBean{
private String zhanghao;
private String password;
private String sex;
private String name;
private String id;
private String postbox;
private String xueyuan;
private String xi;
private String class_;
private String time;
private String area;
private String beizhu;
public uBean() {}
public uBean(String zhanghao, String password, String sex, String name, String id, String postbox, String xueyuan,
String xi, String class_, String time, String area, String beizhu) {
super();
this.zhanghao = zhanghao;
this.password = password;
this.sex = sex;
this.name = name;
this.id = id;
this.postbox = postbox;
this.xueyuan = xueyuan;
this.xi = xi;
this.class_ = class_;
this.time = time;
this.area = area;
this.beizhu = beizhu;
}
public String getZhanghao() {
return zhanghao;
}
public void setZhanghao(String zhanghao) {
this.zhanghao = zhanghao;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPostbox() {
return postbox;
}
public void setPostbox(String postbox) {
this.postbox = postbox;
}
public String getXueyuan() {
return xueyuan;
}
public void setXueyuan(String xueyuan) {
this.xueyuan = xueyuan;
}
public String getXi() {
return xi;
}
public void setXi(String xi) {
this.xi = xi;
}
public String getClass_() {
return class_;
}
public void setClass_(String class_) {
this.class_ = class_;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getBeizhu() {
return beizhu;
}
public void setBeizhu(String beizhu) {
this.beizhu = beizhu;
}
}
Servlet.java 文件主要是判断前端的操作需要调用后端哪个函数。
package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.swing.JOptionPane; import com.bean.uBean; import com.dao.Dao; /** * Servlet implementation class Servlet */ @WebServlet("/Servlet") public class Servlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Servlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); request.setCharacterEncoding("utf-8"); response.setContentType("textml;charset=utf-8"); uBean bean =new uBean(request.getParameter("zhanghao"),request.getParameter("password"),request.getParameter("sex"),request.getParameter("name"),request.getParameter("id"),request.getParameter("postbox"),request.getParameter("xueyuan"),request.getParameter("xi"),request.getParameter("class_"),request.getParameter("time"),request.getParameter("area"),request.getParameter("beizhu")); Dao dao = new Dao(); dao.add(bean); // response.sendRedirect("index.jsp"); PrintWriter out = response.getWriter(); out.print("<script language='javascript'>alert('sucess');window.location.href='index.jsp';</script>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
index.jsp 文件主要用来显示前端页面(html+Java Script)
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <div style="width:100%;text-align:center"> 11 <form id="form" action="Servlet" method="post" onsubmit="return checkAll()"> 12 <% //form用于提交,table用于布局,tr每行,td每列,使用时table > tr > td ,若报错Invalid location of tag,就是嵌套顺序不对%> 13 <table> 14 <tr> 15 <td>登录账号:</td> 16 <td><input id="zhanghao" type=text" name="zhanghao" onblur="checkZhanghao()" /></td> 17 <td><span style="font-size:13px" id="zhanghaospan"></span></td> 18 <tr> 19 <td>登录密码:</td> 20 <td><input id="password" type="password" name="password" onblur="checkPassword()" /></td> 21 <td><span style="font-size:13px" id="passwordspan"></span></td> 22 </tr> 23 <tr> 24 <td>性别:</td> 25 <td> 26 男:<input type="radio" value="boy" name="sex"/> 27 女:<input type="radio" value="girl" name="sex"/> 28 </td> 29 </tr> 30 <tr> 31 <td>姓名:</td> 32 <td><input type="text" value=" " name="name"/></td> 33 </tr> 34 <tr> 35 <td>学号:</td> 36 <td><input id="id" type=text" name="id" onblur="checkId()" /></td> 37 <td><span style="font-size:13px" id="idspan"></span></td> 38 </tr> 39 <tr> 40 <td>电子邮箱:</td> 41 <td><input id="postbox" type="text" name="postbox" onblur="checkPostbox()" placeholder="邮箱"/></td> 42 <td><span style="font-size:13px" id="postboxspan"></span></td> 43 </tr> 44 <tr> 45 <td>所在学院:</td> 46 <td><input id="xueyuan" type=text" name="xueyuan" onblur="checkXueyuan()" /></td> 47 <td><span style="font-size:13px" id="xueyuanspan"></span></td> 48 </tr> 49 <tr> 50 <td>所在系:</td> 51 <td><input id="xi" type=text" name="xi" onblur="checkXi()" /></td> 52 <td><span style="font-size:13px" id="xispan"></span></td> 53 </tr> 54 <tr> 55 <td>所在班级:</td> 56 <td><input id="class_" type=text" name="class_" onblur="checkClass_()" /></td> 57 <td><span style="font-size:13px" id="class_span"></span></td> 58 </tr> 59 <tr> 60 <td>入学年份(界):</td> 61 <td> 62 <select name="time"> 63 <option selected= "selected">1998</option> 64 <option>1997</option> 65 <option>1996</option> 66 </select> 67 </td> 68 </tr> 69 70 <tr> 71 <td>生源地:</td> 72 <td><input id="area" type="text" name="area" onblur="checkArea()" /></td> 73 <td><span style="font-size:13px" id="areaspan"></span></td> 74 </tr> 75 <tr> 76 <td>备注:</td> 77 <td><input id="beizhu" type="text" name="beizhu" onblur="checkBeizhu()" /></td> 78 <td><span style="font-size:13px" id="beizhuspan"></span></td> 79 </tr> 80 <tr> 81 <td><input type="submit" value="注册"/></td> 82 <td><input type="button" name="" value="重置" onclick="formReset()" /></td> 83 </tr> 84 </table> 85 </form> 86 </div> 87 <script type="text/javascript"> 88 //重置按钮处添加onclick调用formReset %> 89 function formReset() 90 { 91 document.getElementById("form").reset(); 92 } 93 function checkZhanghao() 94 { 95 var zhanghao = document.getElementById("zhanghao"); 96 if(!zhanghao.value.match(/^[a-zA-Z]\w{5,11}$/)){
//利用正则表达式判断输入的内容是否符合要求 97 alert("输入不正确"); 98 } 99 //var spanNode = document.getElementById("zhanghaospan"); 100 //编写邮箱的正则 101 var reg = /^[0-9a-zA-Z]{6}/; 102 if(reg.test(zhanghao)){ 103 //符合规则 104 spanNode.innerHTML = "".fontcolor("green"); 105 return true; 106 }else{ 107 //不符合规则 108 spanNode.innerHTML = "登录账号格式不正确,请重新填写!".fontcolor("red"); 109 return false; 110 } 111 } 112 //邮箱输入框处添加onblur在鼠标焦距移出时调用checkPostbox %> 113 function checkPostbox() 114 { 115 var postbox = document.getElementById("postbox").value; 116 var spanNode = document.getElementById("postboxspan"); 117 //编写邮箱的正则 118 var reg = /^[a-z0-9]\w+@[a-z0-9]+(\.[a-z]{2,3}){1,2}$/i; 119 if(reg.test(postbox)){ 120 //符合规则 121 spanNode.innerHTML = "".fontcolor("green"); 122 return true; 123 }else{ 124 //不符合规则 125 spanNode.innerHTML = "邮箱格式不正确,请重新填写!".fontcolor("red"); 126 return false; 127 } 128 } 129 function checkPassword() 130 { 131 var password = document.getElementById("password").value; 132 var spanNode = document.getElementById("passwordspan"); 133 //编写密码的正则 134 var reg =/^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}$/; 135 if(reg.test(password)){ 136 //符合规则 137 spanNode.innerHTML = "".fontcolor("green"); 138 return true; 139 }else{ 140 //不符合规则 141 spanNode.innerHTML = "密码格式不正确,请重新填写!".fontcolor("red"); 142 return false; 143 } 144 } 145 function checkId() 146 { 147 var id = document.getElementById("id").value; 148 var spanNode = document.getElementById("idspan"); 149 //学号的正确形式 150 // var reg = /^[0-9a-zA-Z]{6}/; 151 if((id<"20180000")|| (id>"20189999")) 152 { 153 spanNode.innerHTML = "学号格式不正确,请重新填写!".fontcolor("red"); 154 return false; 155 } 156 else{ 157 //不符合规则 158 spanNode.innerHTML = "".fontcolor("green"); 159 return true; 160 } 161 } 162 function checkAll(){ 163 var postbox = checkPostbox(); 164 var id=checkId(); 165 var zhanghao=checkZhanghao(); 166 var password=checkPassword(); 167 if(postbox&&id&&password&&zhanghao){ 168 return true; 169 }else{ 170 return false; 171 } 172 } 173 </script> 174 </body> 175 </html>

浙公网安备 33010602011771号