在页面输入用户名和密码,进行权限判断。

  • 登录成功跳转到SuccessServlet展示:登录成功!用户名,欢迎您;
  • 登录失败跳转到FailServlet展示:登录失败,用户名或密码错误。

我们这里使用了以下技术:

  • 使用Druid数据库连接池技术,操作mysql,使用spring的JdbcTemplate技术封装JDBC。
  • 对于实体类的封装,我们后面使用了apache的BeanUtils进行了简化
  • 代码中我们编写了实体类,JDBC工具类,操作数据库的dao,测试类和servlet
//首先编写实体类 User

//然后编写通用工具类 JDBCUtils

//然后编写操作数据库表的 UserDao

//现在编写一个测试类,测试UserDao中登录方法是否有效

//然后编写 LoginServlet 用于请求处理、判断和转发
package cn.figo.web.servlet;import cn.figo.web.dao.UserDao;
import cn.figo.web.domain.User;
import org.apache.commons.beanutils.BeanUtils;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");/*//获取请求参数String username = req.getParameter("username");String password = req.getParameter("password");//封装User对象User loginUser = new User();loginUser.setUsername(username);loginUser.setPassword(password);*///使用开源的beanutils简化对象的封装Map<String,String[]> map = req.getParameterMap();User loginUser = new User();try {BeanUtils.populate(loginUser,map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}UserDao dao = new UserDao();User user = dao.login(loginUser);//如果登录成功,转发到成功页,否则转发到失败页if (user == null){req.getRequestDispatcher("/failServlet").forward(req,resp);}else {req.setAttribute("user",user);req.getRequestDispatcher("/successServlet").forward(req,resp);}}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPut(req, resp);}
}

// SuccessServlet
package cn.figo.web.servlet;import cn.figo.web.domain.User;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/successServlet")
public class SuccessServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {User user = (User) request.getAttribute("user");if (user != null){response.setContentType("text/html;charset=utf-8");response.getWriter().write("登录成功," + user.getUsername() + "欢迎您");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}

// failServlet
package cn.figo.web.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/failServlet")
public class FailServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");response.getWriter().write("登录失败,用户名或密码错误");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}

目录结构如下:

为了大家方便使用数据库,建表语句如下

/*

本系列所有java代码,在figo学习整理完放github地址

java基础代码实例_java学习之web基础(3):Servlet 和 Request的登录处理实例相关推荐

  1. java基本语法心得_Java学习笔记(一)——基础语法(上)

    Java学习笔记(一)--基础语法(上) 软件构造 写在前面 编写Java程序时,应注意以下几点:大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 类名:对于所有的 ...

  2. java servlet 学习_java学习之web基础(1):Servlet

    tomcat添加多个module Servlet idea中的project相对于eclipse中的workspace的概念,因此先创建一个project然后在这个project中创建一个module ...

  3. java session使用_java学习之web基础(8):使用session实现带验证码的登录功能

    login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> ...

  4. java 验证码_java学习之web基础(6):使用Response的输出流在页面输出验证码

    package 输出 并且我们可以写一个简单的网页,来实现点击更新验证码 <!DOCTYPE html>

  5. request对象_java学习之web基础(2):Request

    request ServletRequest --(继承)--> HttpServletRequest --(实现)--> org.apache.catalina.connector.Re ...

  6. ideal pom文件安装到maven库中_java学习之web基础(14)Maven基础学习

    maven 介绍 Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM: Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle) ...

  7. java子类代码块_java中父类子类静态代码块、构造代码块执行顺序

    父类静态(代码块,变量赋值二者按顺序执行) 子类静态 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 普通方法在实列调用的时候执行,肯定位于上面之后了 //父类A public class ...

  8. java的开发步骤_Java学习1:JAVA开发的步骤

    JDK(Java开发工具箱,做Java开发必须安装的,这是最根本的一个环境.) JDK不是集成开发环境. JDK这个开发工具箱中时Java最核心的库. 98年的时候:Java升级到JDK1.2,Jav ...

  9. java默认代码地址_Java 8默认方法可能会破坏您的(用户)代码

    java默认代码地址 乍一看, 默认方法为Java虚拟机的指令集带来了一个很棒的新功能. 最后,库开发人员能够开发已建立的API,而不会对其用户代码造成不兼容性. 使用默认方法,当将新方法引入该接口时 ...

最新文章

  1. 《Oracle高性能自动化运维》一一3.3 Redo产生场景
  2. 用GDB调试Segmentation Fault错误
  3. 毕设日志——Linux服务器状态查询命令
  4. linux 输出数据到csv,Linux-从外壳输出CSV文件
  5. jQuery1.11源码分析(8)-----jQuery调用Sizzle引擎的相关API
  6. 图像增强︱window7+opencv3.2+keras/theano简单应用(函数解读)
  7. LNMP 常见问题(FAQ)
  8. leetcode探索动态规划(一)
  9. 部署VC2008应用程序
  10. 【最详细】最全java面试题及答案(210道)
  11. html5魔塔样板快速上手,《梦幻模拟战》魔塔攻略|先人一步,快速上手梦战自走棋指南...
  12. mysql数据库西里尔文乱码_使用Python从MySQL读取西里尔文utf8符号不正确
  13. 软件测试度量分析,软件测试缺陷度量分析
  14. C#--扁平化窗体UI
  15. 安科瑞配电列头柜产品XXX数据中心案例分享
  16. AIX报错(errpt)处理小记
  17. c语言程序的流程控制语句,三 C语言流程控制语句
  18. 23、账号与权限管理
  19. HTML5 2D 游戏开发(一): Snail Bait 简介
  20. VehicleDynamicsAndCoontrol(四) -LONGITUDINAL VEHICLE DYNAMICS

热门文章

  1. [leetcode]Largest Rectangle in Histogram @ Python
  2. linux基础命令(总结)
  3. [MySQL FAQ]系列 -- 新年新思想:MySQL也能并发导入数据
  4. NHibernate源码分析开篇
  5. uni-app,v-for时 block 和 view 的使用
  6. js分享微信 ,微博 ,qq空间
  7. 走进AngularJs(二) ng模板中常用指令的使用方式
  8. BDD(行为驱动开发)
  9. Java Map 自定义排序
  10. 使用CPU时间戳进行高精度计时