• 数据库的连接


    连接数据库。

    首先开启Tomcat数据库,利用eclipse创建一个web文本。

    建立dao层servlet层util层。分别写入相应代码。用网站语言搭建网页jsp。在数据库里建立相应表,取不同名字注意与eclipse中对应属性的一一对应。首id主键递增非null。

    <!-- 输入字段验证部分 -->
    <script type="text/javascript">
    function check(){
        var username=document.getElementById("gs1");
        var password=document.getElementById("gs2");
        var number=document.getElementById("gs5");
        var mail=document.getElementById("gs6");
        var sReg = /[_a-zA-Z\d\-\.]+@[_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+$/; //正则表达式
        //判断用户名位数
        if((username.value).length<6||(username.value).length>12){
            alert('账号请输入6到12位英文字符或数字,以英文字母开头');
            gs1.focus();
            return false;
        }
        //判断用户名是否包含汉字
        if(/.*[\u4e00-\u9fa5]+.*$/.test(username.value)){
            alert('账号用户名不能包含汉字');
            gs1.focus();
            return false;
        }
        //判断用户名是否以英文字母开头
        if(!isNaN(username.value[0])){
            alert('登录账号请以英文字母开头');
            gs1.focus();
            return false;
        }
        //判断密码位数
        if((password.value).length!=8){
            alert('密码应为8位英文或数字');
            gs2.focus();
            return false;
        }
        //判断学号是否以2018开头
         if(number.value<"20180000"|| number.value>"20189999")
                    {
                     alert(" 学号由2018开头的八位组成");             
                     gs5.focus();
                     return false;
                    }
     
        //验证手机号是否合法
         
        //判断邮箱格式是否正确
        if(! sReg.test(mail.value)){   
            alert('邮箱格式错误');
            gs6.focus();
            return false;
        }  
    }
    </script>
    <!-- 验证结束 -->
    </body>
    </html>

     这里面用JavaScript写了邮箱,账号等等的格式判断

    添加成功界面如下:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h1 style="text-align:center;">添加成功</h1>
    <h1 style="text-align:center;"><a href="text.jsp">返回继续添加信息</a></h1>
    </body>
    </html>

     添加失败界面如下:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h1 style="text-align:center;">添加失败</h1>
    <h1 style="text-align:center;"><a href="text.jsp">返回继续添加信息</a></h1>
    </body>
    </html>

     接下来开始封装数据和数据库建立连接,首先创建一个Bean包,来封装数据用代码如下:

    package text.jsp.bean;
    public class UserBean {
        private String id;
        private String password;
        private String sex;
        private String name;
        private String number;
        private String mail;
        private String yuan;
        private String xi;
        private String classes;
        private String time;
        private String place;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        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 getNumber() {
            return number;
        }
        public void setNumber(String number) {
            this.number = number;
        }
        public String getMail() {
            return mail;
        }
        public void setMail(String mail) {
            this.mail = mail;
        }
        public String getYuan() {
            return yuan;
        }
        public void setYuan(String yuan) {
            this.yuan = yuan;
        }
        public String getXi() {
            return xi;
        }
        public void setXi(String xi) {
            this.xi = xi;
        }
        public String getClasses() {
            return classes;
        }
        public void setClasses(String classes) {
            this.classes = classes;
        }
        public String getTime() {
            return time;
        }
        public void setTime(String time) {
            this.time = time;
        }
        public String getPlace() {
            return place;
        }
        public void setPlace(String place) {
            this.place = place;
        }
        public UserBean(String id,String password,String sex,String name,String number,String mail,String yuan,String xi,String classes,String time,String place){
            this.id=id;
            this.password=password;
            this.sex=sex;
            this.name=name;
            this.number=number;
            this.mail=mail;
            this.yuan=yuan;
            this.xi=xi;
            this.classes=classes;
            this.time=time;
            this.place=place;
        }
    }

     然后创建一个util包主要是连接数据库以及判断数据库是否连接成功,若不成功则在控制台输出报错信息,这个代码一般都是直接复制的 只需要改一下数据库的名字。代码如下:

    package text.jsp.util;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class DBUtil
    {  
        private static Connection con;
        private static Statement stm;
        private static ResultSet rs;
        private static String classname="com.mysql.cj.jdbc.Driver";
        private static String url="jdbc:mysql://localhost:3306/gs?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT&&useSSL=false&&allowPublicKeyRetrieval=true";
        public  Connection getCon(){         
            try{
                Class.forName(classname);
                System.out.println("驱动加载成功");
            }
            catch(ClassNotFoundException e){
                e.printStackTrace();
            }
            try{
                con=DriverManager.getConnection(url,"root","123456");
                System.out.println("数据库连接成功");
                 
            }
            catch(Exception e){
                e.printStackTrace(System.err);
                con=null;
            }
            return con;
        }
        public static void close(Statement stm, Connection conn) {
            if(stm!=null) {
                try {
                    stm.close();
                catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
         
        public static void close(ResultSet rs, Statement stm, Connection con) {
            if(rs!=null) {
                try {
                    rs.close();
                catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(stm!=null) {
                try {
                    stm.close();
                catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(con!=null) {
                try {
                    con.close();
                catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

     Dao层这个主要是将数据传到数据库的相应位置,写代码的时候一定要变量一一对应,否则会报错。代码如下:

    package text.jsp.dao;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import text.jsp.bean.UserBean;
    import text.jsp.util.DBUtil;
     
    public class UserDao {
        public boolean add(UserBean user) {
            String sql = "insert into text1021(id,password,sex,name,number,mail,yuan,xi,classes,time,place) values('" + user.getId() + "','" + user.getPassword() + "','" + user.getSex()  + "','" + user.getName()  + "','" + user.getNumber()  + "','" + user.getMail() + "','" + user.getYuan() +"','"+user.getXi() + "','" +user.getClasses() + "','" +user.getTime() + "','" + user.getPlace()+"')";
            DBUtil  db=new DBUtil();
            Connection conn =  db.getCon();//   ÷          
            Statement state = null;
            boolean f = false;
            int a = 0 ;
             
            try {        
                state = conn.createStatement();
                a = state.executeUpdate(sql);
            catch (Exception e) {          
                e.printStackTrace();
            finally {
                         
                DBUtil.close(state, conn);
            }
             
            if (a > 0) {
                f = true;
            }
            return f;
        }      
         
    }

     servlet包,这个主要作用就是从jsp里面接受请求并作出判断并返回成功或者失败界面

    代码如下:

    package text.jsp.servlet;
    import java.io.IOException;
    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 text.jsp.dao.UserDao;
    import text.jsp.bean.UserBean;
     
    /**
     * Servlet implementation class textservlet
     */
    @WebServlet("/textservlet")
    public class textservlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
            
        /**
         * @see HttpServlet#HttpServlet()
         */
        public textservlet() {
            super();
            // TODO Auto-generated constructor stub
        }
        UserDao userDao=new UserDao();
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
            response.setContentType("textml;charset=UTF-8");
            response.setHeader("content-type""textml;charset=UTF-8");
             String id=request.getParameter("gs1");
             String password=request.getParameter("gs2");
             String sex=request.getParameter("p");
             String name=request.getParameter("gs4");
             String number=request.getParameter("gs5");
             String mail=request.getParameter("gs6");
             String yuan=request.getParameter("gs7");
             String xi=request.getParameter("gs8");
             String classes=request.getParameter("gs9");
             String time=request.getParameter("p2");
             String place=request.getParameter("gs11");
             UserBean userbean=new UserBean( id, password, sex, name, number, mail, yuan, xi, classes, time, place);
             if(userDao.add(userbean)) {
                    request.getRequestDispatcher("success.jsp").forward(request,response);
                }
                else {
                    request.getRequestDispatcher("fail.jsp").forward(request,response);
                }
        }
     
        /**
         * @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);
        }
     
    }
  • 相关阅读:
    HDU-4514 湫湫系列故事——设计风景线 手动扩栈
    HDU-4511 小明系列故事——女友的考验 floyd变种-标号递增最短路
    Codeforces Round #199 (Div. 2)
    HDU-4507 吉哥系列故事——恨7不成妻 数位DP
    ZOJ-2342 Roads 二分图最小权值覆盖
    C++题目一道: 重载`->': 您真的懂成员访问运算符的重载吗?
    FCEUX金手指加强版
    原码,反码与补码之间的转换简记
    stm32开发
    Windows中"打开方式..."无法指定程序的解决办法
  • 原文地址:https://www.cnblogs.com/aiyyue/p/11755427.html
Copyright © 2020-2023  润新知