用servlet写的学生登录注册

来源:互联网 发布:ios 数组用什么修饰 编辑:程序博客网 时间:2024/06/08 00:22

①数据库

CREATE TABLE `member` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `username` varchar(20) NOT NULL,  `pass` varchar(20) NOT NULL,  `age` int(3) DEFAULT NULL,  `sex` varchar(2) DEFAULT NULL,  `hobby` varchar(20) DEFAULT NULL COMMENT '爱好',  `ipaddr` varchar(20) DEFAULT NULL,  `sheng` varchar(10) DEFAULT NULL,  `info` text,  PRIMARY KEY (`id`))

②首页:

<body>    <h1>学生管理系统</h1>    <form action="login" method="post">    <table>        <tr>            <td>用户名:</td>            <td><input type="text" name="username"></td>        </tr>        <tr>            <td>密码:</td>            <td><input type="password" name="pass"></td>        </tr>        <tr>            <td><input type="submit" value="登录"> </td>            <td><a href="reg.html">没有账号?点我注册</a></td>        </tr>    </table>    </form>  </body>

③注册:

<body>   <h1>用户注册</h1>   <form action="reg" method="post">        用户名:<input type="text" name="username"><br>        密码:<input type="password" name="pass"><br>        重复密码:<input type="password" name="pass2"><br>        年龄:<input type="text" name="age"><br>        性别:男<input type="radio" name="sex" value="男">                    女<input type="radio" name="sex" value="女">         <br>        爱好:        旅游 <input type="checkbox" name="hobby" value="旅游">         编程 <input type="checkbox" name="hobby" value="编程">         美食 <input type="checkbox" name="hobby" value="美食">         <br>        所在省份:<select name="sheng">                    <option value="湖北">湖北</option>                    <option value="湖南">湖南</option>                    <option value="河北">河北</option>                    <option value="河南">河南</option>                </select><br>        个人简介:<textarea rows="6" cols="35" name="info"></textarea>        <br>        <input type="submit" value="注册">   </form>  </body>

④连接数据库的工具类:

package com.bright;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class JDBCUtil {    private String url;     //url地址    private String dbuser;  //数据库的用户名    private String dbpass;  //数据库的登录密码    public String getUrl() {        return url;    }    public void setUrl(String url) {        this.url = url;    }    public String getDbuser() {        return dbuser;    }    public void setDbuser(String dbuser) {        this.dbuser = dbuser;    }    public String getDbpass() {        return dbpass;    }    public void setDbpass(String dbpass) {        this.dbpass = dbpass;    }    public JDBCUtil() {        super();    }    public JDBCUtil(String url, String dbuser, String dbpass) {        super();        this.url = url;        this.dbuser = dbuser;        this.dbpass = dbpass;    }    //静态代码块,加载驱动    static{        try {            Class.forName("com.mysql.jdbc.Driver");        } catch (ClassNotFoundException e) {            e.printStackTrace();        }    }    //对外提供一个连接数据库的方法    public Connection getConnection() throws Exception{        return DriverManager.getConnection(this.url, this.dbuser, this.dbpass);    }}

⑤定义一个用户类:

package com.bright;public class User {    private int id;    private String username;    private String pass;    private int age;    private String sex;    private String hobby;    private String sheng;    private String ipaddr;    private String info;    public User() {        super();    }       public User(String username, String pass, int age, String sex,            String hobby, String sheng, String ipaddr, String info) {        super();        this.username = username;        this.pass = pass;        this.age = age;        this.sex = sex;        this.hobby = hobby;        this.sheng = sheng;        this.ipaddr = ipaddr;        this.info = info;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPass() {        return pass;    }    public void setPass(String pass) {        this.pass = pass;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public String getHobby() {        return hobby;    }    public void setHobby(String hobby) {        this.hobby = hobby;    }    public String getSheng() {        return sheng;    }    public void setSheng(String sheng) {        this.sheng = sheng;    }    public String getIpaddr() {        return ipaddr;    }    public void setIpaddr(String ipaddr) {        this.ipaddr = ipaddr;    }    public String getInfo() {        return info;    }    public void setInfo(String info) {        this.info = info;    }}

⑥用户类的处理:

package com.bright;import java.sql.*;//注册的时候保存用户(通过用户的id)public class UserDao {    //因为这个操作类就是对数据库进行操作,所有要连接数据库    private JDBCUtil util;    public JDBCUtil getUtil() {        return util;    }    public void setUtil(JDBCUtil util) {        this.util = util;    }    //    public void saveUser(User user){        Connection conn = null;        PreparedStatement stat = null;        try {            String sql = "insert into member values (null,?,?,?,?,?,?,?,?)";            conn = util.getConnection();        //创建连接            stat = conn.prepareStatement(sql);  //创建预处理对象            //存储数据(有几个问好,就存几个)            stat.setString(1, user.getUsername());            stat.setString(2, user.getPass());            stat.setInt(3, user.getAge());            stat.setString(4, user.getSex());            stat.setString(5, user.getHobby());            stat.setString(6, user.getIpaddr());            stat.setString(7, user.getSheng());            stat.setString(8, user.getInfo());            stat.executeUpdate();//保存        } catch (Exception e) {            e.printStackTrace();        }finally{            try {                if(conn!=null&!conn.isClosed()){                    conn.close();                }            } catch (SQLException e) {                e.printStackTrace();            }        }    }    //登录时,通过用户名找到这个对象,因为查询到的是一个对象,所有返回一个user    public User getUserByName(String uname){        User user = null;        Connection conn = null;        PreparedStatement stat = null;        ResultSet res = null;        try {            String sql = "select * from member where username = ?";            conn = util.getConnection();            stat = conn.prepareStatement(sql);            stat.setString(1, uname);            //把查询到的数据放到结果集中            res = stat.executeQuery();//查询            //如果查询到,就将结果集中的数据保存到用户中            if(res.next()){                user = new User();                user.setId(res.getInt("id"));                user.setAge(res.getInt("age"));                user.setUsername(res.getString("username"));                user.setPass(res.getString("pass"));            }        } catch (Exception e) {            e.printStackTrace();        }finally{            try {                if(conn!=null&!conn.isClosed()){                    conn.close();                }            } catch (SQLException e) {                e.printStackTrace();            }        }        return user;    }   }

⑦处理登录:

package com.bright;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class LoginServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {        //获取请求参数        req.setCharacterEncoding("utf8");        String username = req.getParameter("username");        String pass = req.getParameter("pass");        resp.setContentType("text/html;charset=utf8");        PrintWriter out = resp.getWriter();        //如果用户名和密码不为空,并且长度大于0就执行if语句--->判断查询到的user--->判断密码是否一致        if(username!=null&&username.length()>0&&pass!=null&&pass.length()>0){            //要连接数据库,先从配置表中获取初始化参数传给JDBSUtil的构造函数            ServletContext ctx = this.getServletContext();            String url = ctx.getInitParameter("url");            String dbuser = ctx.getInitParameter("dbuser");            String dbpass = ctx.getInitParameter("dbpass");            JDBCUtil util = new JDBCUtil(url, dbuser, dbpass);                  //然后将util作为参数传给操作类            UserDao dao = new UserDao();            dao.setUtil(util);            //调用操作类的通过用户名查询用户            User user = dao.getUserByName(username);            if(user!=null){                if(user.getPass().equals(pass)){                    out.println("<h1>恭喜你!登录成功!进入了学生管理系统!</h1>");                }else{                    out.println("<h1>登录失败!密码错误!</h1>");                    out.println("<br><a href='index.jsp'>点此登录</a>");                }            }else{                out.println("<h1>登录失败!用户名错误!</h1>");                out.println("<br><a href='index.jsp'>点此登录</a>");            }        }else{            out.println("<h1>登录失败!用户名/密码错误!</h1>");            out.println("<br><a href='index.jsp'>点此登录</a>");        }        out.flush();        out.close();    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {        // TODO Auto-generated method stub        doGet(req, resp);    }}

⑧处理注册:

package com.bright;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class RegServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {        //提交方式为post        req.setCharacterEncoding("utf8");        //接收请求中的参数        String username = req.getParameter("username");        String pass = req.getParameter("pass");        String pass2 = req.getParameter("pass2");        String age = req.getParameter("age");        String sex = req.getParameter("sex");        String[] hobbys = req.getParameterValues("hobby");        String hobby = "";        for(int i=0;i<hobbys.length;i++){            if(i!=hobbys.length-1){                hobby += hobbys[i]+",";            }else{                hobby += hobbys[i];            }        }        String sheng = req.getParameter("sheng");        String info = req.getParameter("info");        String ipaddr = req.getRemoteAddr();        int iage = -1;        try {            iage = Integer.parseInt(age);        } catch (NumberFormatException e) {            e.printStackTrace();        }        resp.setContentType("text/html;charset=utf8");        PrintWriter out = resp.getWriter();        //输入校验        if(username!=null&&username.length()>5&&pass!=null&&pass.length()>5&&pass.equals(pass2)&&iage>=0){            //要连接数据库,先从配置表中获取初始化参数传给JDBSUtil的构造函数            ServletContext ctx = this.getServletContext();            String url = ctx.getInitParameter("url");            String dbuser = ctx.getInitParameter("dbuser");            String dbpass = ctx.getInitParameter("dbpass");                     JDBCUtil util = new JDBCUtil(url, dbuser, dbpass);            //userdao--->util--->数据库            //然后将util作为参数传给操作类            UserDao dao = new UserDao();            dao.setUtil(util);            //将获取的的参数存到uer中,调用操作类中的方法保存            User user = new User(username, pass, iage, sex, hobby, sheng, ipaddr, info);            dao.saveUser(user);            out.println("<h1>恭喜你!注册成功</h1>");            out.println("<br><a href='index.jsp'>点此登录</a>");        }else{            out.println("<h1>参数有误,注册失败!</h1>");            out.println("<br><a href='reg.html'>重新注册</a>");        }        out.flush();        out.close();    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {        // TODO Auto-generated method stub        doGet(req, resp);    }       }

⑨配置信息:

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"     xmlns="http://java.sun.com/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  <display-name></display-name>   <context-param>    <param-name>url</param-name>    <param-value>jdbc:mysql:///servlet</param-value>  </context-param>  <context-param>    <param-name>dbuser</param-name>    <param-value>root</param-value>  </context-param>  <context-param>    <param-name>dbpass</param-name>    <param-value>123</param-value>  </context-param>  <servlet>    <servlet-name>RegServlet</servlet-name>    <servlet-class>com.bright.RegServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>RegServlet</servlet-name>    <url-pattern>/reg</url-pattern>  </servlet-mapping>  <servlet>    <servlet-name>LoginServlet</servlet-name>    <servlet-class>com.bright.LoginServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>LoginServlet</servlet-name>    <url-pattern>/login</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>
1 0
原创粉丝点击