一、登录

1、登录过程分析:

通过表单收集用户的数据,Servlet通过request对象获得用户提交的数据,服务器还需要从数据库中通过sql语句查询有没有表单提交的数据中的用户。有则登录成功,否则,登录失败。

2、工程结构:

3、主要代码分析:

<body bgcolor="aqua">
<center>
<h3>登录</h3>
<form action="/Login_war_exploded/log" method="get">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用户名:<input type="text" name="username" size=""><br>
密&nbsp;&nbsp;码 :<input type="password" name="password" size="" ><br><br>
<input type="reset" value="取消">
<input type="submit" value="登录">
</form>
</center>
</body>

(1)通过定义表单为Servlet提供数据,其中的name属性的值与Servlet的request.getParameter的参数相同,实现了html页面与服务器的联系。

(2)action属性实现了页面的跳转,即提交数据之后去执行Servlet,action的属性值为工程名与Servlet名的组合。

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Connection con=null;
login log= null;
String account=request.getParameter("username");//获得表单数据
String password=request.getParameter("password");
try {
con=C3p0Utils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "Select * from login where account=? and password=?";
Object[] select = {account,password};
log = qr.query(con, sql, new BeanHandler<login>((login.class)), select);
if(log!=null){
response.getWriter().write("nihao"+account); }
else{
response.getWriter().write("wrong");
} }
catch (SQLException e) {
throw new RuntimeException(e);
}
}

Servlet在html页面与数据库之间,在完成与html交流的同时,还要与数据库中的数据打交道。

 二、注册

1、Servlet实现注册的思路:

2、工程结构

3、功能实现:

(1)html实现对数据的收集:

<body bgcolor="aqua">
<center>
<h3>注册</h3>
<form action="/Register_servlet_war_exploded/register" method="post">
用户名:<input type="text" name="account" size="12"><br><br>
密码:<input type="password" name="password" size="12">
<input type="submit" value="注册">
<input type="reset" value="取消">
</form>
</center>
</body>

(2)Servlet:获取表单提交的数据,并将他们封装到Map集合中(可以减少代码量)

public class ServletRegister extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
request.setCharacterEncoding("UTF-8");
Map<String, String[]> properties=request.getParameterMap();//将表单中的数据封装到Map中
Login log= new Login();
try {
BeanUtils.populate(log, properties);
} catch (IllegalAccessException|InvocationTargetException e) {
e.printStackTrace();
}
try {
regist(log);
} catch (SQLException e) {
e.printStackTrace();
}
response.sendRedirect(request.getContextPath()+"/log.html");//重定向
}
public void regist(Login log) throws SQLException{//数据库
Connection con=null;
try {
con = C3p0Utils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "insert into Login values(?,?)";
Object[] insert = {log.getAccount(), log.getPassword()};
qr.update(con, sql, insert);
}
catch (SQLException e){
throw new RuntimeException(e);
}
}

Servlet实现用户登录的更多相关文章

  1. Servlet——简单用户登录实例+http协议解析

    编写项目.用户登录系统1.0版本号 登录界面Servlet: package com.gavin.view; import java.io.IOException; import java.io.Pr ...

  2. Servlet+jsp用户登录加上验证码

    最近公司有个项目被客户拿去进行漏洞扫描,发现用户登录太简单,容易被暴力破解.当然发现的问题很多,什么反射型XSS,存储型XSS,敏感信息泄露等等.但是我们今天不讲这么多,就说说如何修复暴力破解的问题. ...

  3. 用servlet实现用户登录案例

    以下实现登录窗口 Login.jsp <!--Login.jsp--> <%@ page language="java" import="java.ut ...

  4. Java EE之servlet实现用户登录

    1.在连接数据库的JAVA类中添加查询功能: 在这之前有一个连接数据库的方法: Connection conn=null; PreparedStatement stat=null;           ...

  5. jsp使用servlet实现用户登录 及动态验证码

    在进行表单设计中,验证码的增加恰恰可以实现是否为“人为”操作,增加验证码可以防止网站数据库信息的冗杂等... 现在,我将讲述通过servlet实现验证码: 验证码作为一个图片,在页面中为“画”出来的, ...

  6. Javaweb 使用Servlet技术改写用户登录 使用Filter技术解决中文乱码

    先把实验3的jsp页面复制过来: WebContent->WEB-INF->lib下面的jar包8.0版本也要记得复制: Java Resources->src下的 cn.edu.h ...

  7. javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  8. jsp&servlet初体验——用户登录功能实现

    数据库准备-创建db_login数据库  t_user表 1.创建web工程 2.创建用户model   user.java package com.gxy.model; public class U ...

  9. 基于Servlet的MVC模式用户登录实例

    关于MVC模式的简单解释 M Model,模型层,例如登录实例中,用于处理登录操作的类: V View,视图层,用于展示以及与用户交互.使用html.js.css.jsp.jQuery等前端技术实现: ...

随机推荐

  1. Nunit与Xunit介绍

    Nunit安装 首先说下,nunit2.X与3.X版本需要安装不同的vs扩展. nunit2.x安装 安装如上3个,辅助创建nunit测试项目与在vs中运行单元测试用例 . 1.Nunit2 Test ...

  2. (三十)c#Winform自定义控件-文本框(三)

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  3. 原生js实现分页功能

    原生就是实现分页功能 代码如下: var pagination = function(option,fun){ this.parentId = option.id; //容器 this.pageSiz ...

  4. 使用sc 命令写脚本 添加和删除服务 简单应用

    添加服务 @echo.服务启动...... @echo off @sc create 服务名 binPath= "%~dp0\服务路径" @sc config 服务名 start= ...

  5. BeautifulSoup 库简单学习使用

    from bs4 import BeautifulSoup as BS # 首先是初始化一个BeautifulSoup的对象 soup = BS(text,'lxml') 示例: from bs4 i ...

  6. 消息中间件——RabbitMQ(五)快速入门生产者与消费者,SpringBoot整合RabbitMQ!

    前言 本章我们来一次快速入门RabbitMQ--生产者与消费者.需要构建一个生产端与消费端的模型.什么意思呢?我们的生产者发送一条消息,投递到RabbitMQ集群也就是Broker. 我们的消费端进行 ...

  7. urllib.request.urlretrieve()用于下载制定url内容到本地

    函数:urllib.urlretrieve(url[, filename[, reporthook[, data]]]) 参数说明: url:外部或者本地url ,url中不要含有中文,好像会出错.f ...

  8. mysql的优化策略

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  9. Python多进程的Join和daemon(守护)的用法

    join和daemon 下面仅以多进程为例: 知识点一: 当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多线程时,主线程会创建多个子线程,在python中,默认情况下 ...

  10. Synchronized机制下偏向锁、轻量级锁、重量级锁的适用场景

    上次总结了Synchronized机制下的锁的种类和原理,这次总结一下几种锁的适用场景. 偏向锁 一个线程获取某个对象的偏向锁的成本是很低的,只需把对象头的偏向线程id改为自己就好,如果偏向线程id已 ...