用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
- 用servlet写的学生登录注册
- JDBC+Servlet+JSP+Mysql写的一个简单的登录注册
- servlet+mysql+jsp简单的登录注册功能。【详解,写得比较细,适合新手看】
- Servlet简单实现的注册登录功能
- AS3写的页面注册登录组件
- Java程序---学生管理系统的登录和注册
- 用Servlet写登录验证码
- 完整的JSP+Servlet+MyEclipse编写的注册登录
- Servlet 实现登录与注册
- 用servlet实现登录注册功能时遇到的问题和解决方法
- JSP+JavaBean+Servlet用户注册登录请求的处理
- 简单的JSP-Servlet登录,注册,修改密码操作
- JSP+SERVLET+MVC登录和注册的例子
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 很全面的登录注册页面(jsp+servlet+jstl)
- Servlet实现用户的登录注册+sqlite数据库验证
- Scrapy设置之Analysis
- ACM内部函数--数学问题--大数相减
- c++ set 常用用法介绍
- STL中关联容器map的用法
- 幻影粒子particleIllusion—简单做特效
- 用servlet写的学生登录注册
- 我止于你
- ubuntu14.10安装配置jdk
- css清除浮动
- 杂记:Visual Tracking + Object Proposals + Features + Coding
- 虚拟现实如何让学习成为全民化体验?
- altium designer怎么在原理图中批量修改元件封装
- SpringMVC 国际化
- Linux报bus error(总线错误)解决办法