Servlet学习笔记--jsp+Servlet+MySQL实现用户注册
2015-10-15 23:12
786 查看
一、步骤:
1、在数据库中新建user表,表中包含user_id、username、password,它们分别表示用户ID、用户名和密码
2、创建Servlet类,名为RegServlet,用于处理用户注册请求,在类中重写init()和doPost()方法。接着在web.xml中写RegServlet类的配置信息。
3、修改index.jsp页面,用于用户注册所需的表单。
二、遇到的“坑”
1、若用response。setCharacterEncoding(“utf-8”)来设置response的编码,则会出现“The method setCharacterEncoding(String) is undefined for the type RegServlet”错误,后来 改成“换成response.setContentType(“utf-8”);”也不行。。。,后来百度了一下。大神说:response.setCharacterEncoding(“”); 在Servlet2.3中是不行的,至少要2.4版本才可以,如果低于2.4版本,可以用如下办法: response.setContentType(“text/html;charset=utf-8”);
果然,真的可以O(∩_∩)O
三、相关代码
1、RegServlet.java
2、RegServlet类的Servlet配置代码如下:
3、index.jsp
1、在数据库中新建user表,表中包含user_id、username、password,它们分别表示用户ID、用户名和密码
2、创建Servlet类,名为RegServlet,用于处理用户注册请求,在类中重写init()和doPost()方法。接着在web.xml中写RegServlet类的配置信息。
3、修改index.jsp页面,用于用户注册所需的表单。
二、遇到的“坑”
1、若用response。setCharacterEncoding(“utf-8”)来设置response的编码,则会出现“The method setCharacterEncoding(String) is undefined for the type RegServlet”错误,后来 改成“换成response.setContentType(“utf-8”);”也不行。。。,后来百度了一下。大神说:response.setCharacterEncoding(“”); 在Servlet2.3中是不行的,至少要2.4版本才可以,如果低于2.4版本,可以用如下办法: response.setContentType(“text/html;charset=utf-8”);
果然,真的可以O(∩_∩)O
三、相关代码
1、RegServlet.java
package com.code; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class RegServlet extends HttpServlet { private static final long serialVersionUID = 6162631333316063332L; private Connection conn;//连接数据库Connection public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the GET method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } //doPost()方法处理用户注册请求 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8");//设置request的编码 response.setContentType("text/html;charset=utf-8");//设置response的编码。若换成response.setContentType("utf-8"),则从Servlet中传到jsp的中文会乱码 String userID = request.getParameter("userID");//获取jsp中表单中的用户ID String username = request.getParameter("username");//获取jsp中表单中的username String password = request.getParameter("password");//获取jsp中表单中的password if (conn != null) {//判断数据库是否连接成功 String sql = "insert into user(user_id,username,password)" + "values(?,?,?)";//SQL语句。用来向user表插入记录,使用“?”表示占位符 try { PreparedStatement ps = conn.prepareStatement(sql);//创建PreparedStatement对象 //对SQL中的参数动态赋值 ps.setString(1, userID); ps.setString(2, username); ps.setString(3, password); ps.executeUpdate();//执行更新操作 PrintWriter out = response.getWriter();//获取PrintWriter对象 out.print("<h1 align='center'>"); out.print(username + ",注册成功!"); out.print("</h1>"); out.flush(); out.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { response.sendError(500, "数据库连接错误");//发送数据库连接错误信息提示信息 } } //init()是Servlet的初始化方法,此方法只运行一次。在这例子中,用此方法来加载数据库驱动,并获得数据库连接对象Connection public void init() throws ServletException { super.init(); try { Class.forName("com.mysql.jdbc.Driver");//加载驱动,这里用的是MySQL,要在项目中导入mysql-connector-java-5.1.25。jar包,不然会报错 String url = "jdbc:mysql://localhost:3306/SSH";//数据库连接UML conn = DriverManager.getConnection(url, "root", "");//获取数据库连接 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
2、RegServlet类的Servlet配置代码如下:
<servlet> <servlet-name>RegServlet</servlet-name> <servlet-class>com.code.RegServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RegServlet</servlet-name> <url-pattern>/RegServlet</url-pattern> </servlet-mapping>
3、index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; request.setCharacterEncoding("utf-8"); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="RegServlet" method="post" onsubmit="return reg(this);"> <table align="center"> <tr> <td>用户ID</td> <td><input type="text" name="userID" /></td> </tr> <tr> <td>用户姓名</td> <td><input type="text" name="username" /></td> </tr> <tr> <td>密码</td> <td><input type="password" name="password" /></td> </tr> <tr> <td><input type="reset" value="refresh" /></td> <td><input type="submit" value="注册" /></td> </tr> </table> </form> </body> </html>
相关文章推荐
- MySQL Binlog的介绍
- MySQL时间戳和日期相互转化
- MySQL中ROUND和TRUNCATE的区别
- mysql NULL 查找条件里包含NULL值是的情况
- navicat for mysql只导出数据表结构
- MySQL: 打开binlog选项后无法重启MySQL
- 使用sqlyog学习mysql中怎样创建用户、数据库、表
- mysql 服务器发现大量的TIME_WAIT解决办法
- mysql字符集
- mysql 5.6 mysql 5.7修改root密码 密码过期
- MySQL中数据库批量导入.SQL数据文件
- C#连接MySql
- mysql数据库的一半操作
- Mysql函数
- MySQL数据库加密和解密~认证登陆密码(mysql.user)和MySQL不区分大小写
- MySql 加锁问题
- MySQL 查询单条数据多次与一次查询多条数据的比较
- MySQL 常用命令
- mysql反引号的应用
- MySQL旧版本ORDER BY 方法