JSP最令我痴迷的地方在于其神奇的Servlet映射,映射一直是现在网站开发,MVC ,SSH框架都必备的最重要的基础技能。
我们今天就用用户注册的实例来讲解Servlet的用法
下面是我提前建好的数据库:

首先我们新建一个Dynamic Web Project(动态网页)
我们在src文件下新建一个包,并创建一个servlet:RegServlet

一个新的servlet具有以下的基础代码:

首先我们在RegServlrt类中重写init()方法和doPost()方法。在基础代码中是没有给出init()方法的,需要我们自己去写。

首先看看我们引用的jar包

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

首先在init()方法中获取数据库连接。

//数据库连接Connectionprivate Connection conn;  public void init()throws ServletException{super.init();try{//加载驱动Class.forName("com.mysql.jdbc.Driver");//设置urlString url="jdbc:mysql://localhost:3306/MyBlog";//获取连接conn =DriverManager.getConnection(url, "root", "");         }catch(Exception e){e.printStackTrace();}}

其中驱动的jar包是需要自己下载的,我这里引用的是mysql.jar:

运行时可能提示一些小问题,tomcat找不到该驱动,解决办法就是将jar包复制粘贴到tomcat的lib中,就没事了。
接下来就是填充doPost代码:

//设置编码格式response.setContentType("text/html");request.setCharacterEncoding("GBK");response.setCharacterEncoding("GBK");//获取表单中的属性值String username=request.getParameter("username");String password=request.getParameter("password");String sex=request.getParameter("sex");String question=request.getParameter("question");String answer=request.getParameter("answer");String email=request.getParameter("email");if(conn!=null){try{//插入注册信息的SQL语句(使用?占位符)String sql="insert into tb_user(username,password,sex,question,answer,email)"+"values(?,?,?,?,?,?)";//这里会有两类,一类是com.mysql.jdbc,一类是java.sql,没有本质区别,java.sql兼容性会更强。PreparedStatement ps=conn.prepareStatement(sql);ps.setString(1, username);ps.setString(2, password);ps.setString(3, sex);ps.setString(4, question);ps.setString(5, answer);ps.setString(6, email);ps.executeUpdate();//获取PrintWriter对象。PrintWriter  out=response.getWriter();out.print("<h1 aling='center'>");out.print(username+"注册成功!");out.print("</h1>");out.flush();out.close();}catch(Exception e){e.printStackTrace();}}else{response.sendError(500,"数据库连接错误!");}}

接下里就是我们index.jsp页面的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><form action ="RegServlet" method="Post" onsubmit="return reg(this);"><table align="center" border="0", width="500"><tr><td align ="right" width ="30%">用户名:</td><td><input type ="text" name ="username" class="box"></td>           </tr><tr><td align ="right" width ="30%">密码:</td><td><input type ="text" name ="password" class="box"></td>           </tr><tr><td align ="right" width ="30%">性别:</td><td><input type ="radio" name ="sex" value="男" checked="checked">男<input type ="radio" name ="sex" value="女" >女</td>           </tr><tr><td align ="right" width ="30%">密码找回问题:</td><td><input type ="text" name ="question" class="box"></td>           </tr><tr><td align ="right" width ="30%">密码找回答案:</td><td><input type ="text" name ="answer" class="box"></td>           </tr><tr><td align ="right" width ="30%">邮箱:</td><td><input type ="text" name ="email" class="box"></td>           </tr><tr><td colspan="2" align="center" height="40"><input type ="submit" value="注册"><input type ="reset" value="重置"></td></tr> </body>
</html>

最重要的步骤,也是今天的重点:配置servlet
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>MyBlog</display-name><servlet><servlet-name>RegServlet</servlet-name><servlet-class>servlet.RegServlet</servlet-class></servlet><servlet-mapping><servlet-name>RegServlet</servlet-name><url-pattern>/RegServlet</url-pattern></servlet-mapping></web-app>

我们运行index.jsp



这里出现了乱码问题,是为什么呢,明明设置的字符集都是统一的。因为通过servlet处理form表单就会出现这样的情况。解决办法是加个过滤器。我后面会讲到。

JSP与Servlet实现用户注册相关推荐

  1. JSP+Javabean+Servlet实现用户注册

    在entity包下新建javabean   也就是实体类User 注意id用 Integer 而不用 int, 因为 int 自动初始化为0 public class User { private I ...

  2. Java web实验购物网站(IDEA开发环境,JavaScript,JSP,Servlet,jQuery,Ajax,MySql等)——实现购物车

    Java web实验购物网站 实验要求 实验开发工具及使用技术 准备工作 完整项目目录结构 实验结果展示 实验步骤 小结 项目完整代码及数据库.SQL文件 自学网站 2021.05.25补充 实验要求 ...

  3. JSP和Servlet常见面试题

    1. Servlet的生命周期? 装载Servlet类并创建实例阶段,该阶段在默认情况下发生在客户端第一次向服务器端发送请求 初始化阶段,servlet实例创建完成后,调用init(ServletCo ...

  4. jsp与java的关系_jsp教程中:jsp与servlet的区别和关系

    jsp教程上:我们一定学了servlet,也学习了jsp,那么jsp与servlet的区别是什么呢,jsp与servlet又有什么关系呢?下面我们先创建一个demo.jsp的页面,然后tomcat运行 ...

  5. JSP和Servlet学习笔记1 - 访问配置

    1. 访问 WebContent 目录下的 JSP 文件 在 WebContent 目录下的文件可以直接在浏览器中访问.新建一个 test.jsp 文件 <%@ page language=&q ...

  6. java与servlet JSP_java面试精品全集[jsp与servlet部分]

    一.Jsp方面 1.forward 和redirect的区别 答:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本 ...

  7. 详谈jsp和servlet的区别

    其实说白了JSP和SERVLET到底什么区别呢,JSP就象宾馆前台的服务员,要长的不错,让顾客一看就觉得比较舒服,他主要就是负责显示这个宾馆的形象的.而SERVLET就象部门经理,要处理各种各样的业务 ...

  8. java servlet 获取路径问题_Java,JSP,Servlet获取当前工程路径(绝对路径)问题解析...

    在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是webroot 在class文件中,根目录是webroot/web-inf/classes 当然你也可以用system.getpro ...

  9. JSP和Servlet面试题精选

    1,JSP的内置对象有哪些? 答:JSP共有9个内置对象分别是: request:用户端请求,此请求会包含来自GET/POST请求的参数 response:网页传回用户端的回应 pageContext ...

最新文章

  1. HTTP协议详解【转】
  2. java GUI界面之JTable详解
  3. rocketmq 消息指定_闲话RocketMQ
  4. 8 一点就消失_微信富二代男友转账20w后,却在见面前一秒消失??...
  5. 【收藏】keepalived nginx服务检测脚本
  6. ehcache使用_Mybatis整合(Redis、Ehcache)实现二级缓存,恕我直言,你不会
  7. 火热报名 |【 6月26日上海站】VCEC沙龙第5期:智能化技术在质量场景落地和实践...
  8. 百度android输入法表情符号,百度输入法安卓5.8版推“史上最丰富颜文字库”
  9. Mac菜单栏设置教程,教你更改顺序或隐藏APP图标
  10. 使用AMOS软件构建结构方程模型
  11. ubantu安装搜狗常见问题
  12. 鸿蒙形容欣欣向荣发展,比喻事业蓬勃发展繁荣兴旺的成语蒸蒸日上
  13. iOS 签名机制与证书
  14. android11屏蔽导航栏
  15. cad角度命令怎么输入_CAD中用好这个命令,任意等分角度不再是难事
  16. js 实现简单todo效果
  17. 杜一楠的反躬自省与24券的墓志铭
  18. docker更换国内镜像(网易docker镜像)解决docker下载镜像慢问题
  19. [matlabpython]01——sort排序的相关内容
  20. mysql获取当天每小时统计_详解mysql 获取某个时间段每一天、每一个小时的统计数据...

热门文章

  1. 修改Linux用户名密码的指令
  2. 为什么单点登录更有优势?与密码管理器相比
  3. Sabotage UVA - 10480 (最小割+求最小割去掉的具体边+ISAP)
  4. C语言 const变量能不能修改?
  5. “他怎么那么红” 相声瓦舍和德云社一样能讲传统相声
  6. 桌面图标变成空白页如何处理?
  7. 2020美容师(初级)考试试题及美容师(初级)操作证考试
  8. 鸿蒙os价格表,搭载鸿蒙 OS!华为智慧屏新品来袭:价格 3000+
  9. 地图上分成一块一块区域 高德地图_CAD数据分块,偏移校准,加载到百度地图、高德地图、谷歌等地图上...
  10. Python timeit库测试代码片段运行时间