java基础代码实例_java学习之web基础(3):Servlet 和 Request的登录处理实例
在页面输入用户名和密码,进行权限判断。
- 登录成功跳转到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的登录处理实例相关推荐
- java基本语法心得_Java学习笔记(一)——基础语法(上)
Java学习笔记(一)--基础语法(上) 软件构造 写在前面 编写Java程序时,应注意以下几点:大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 类名:对于所有的 ...
- java servlet 学习_java学习之web基础(1):Servlet
tomcat添加多个module Servlet idea中的project相对于eclipse中的workspace的概念,因此先创建一个project然后在这个project中创建一个module ...
- java session使用_java学习之web基础(8):使用session实现带验证码的登录功能
login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> ...
- java 验证码_java学习之web基础(6):使用Response的输出流在页面输出验证码
package 输出 并且我们可以写一个简单的网页,来实现点击更新验证码 <!DOCTYPE html>
- request对象_java学习之web基础(2):Request
request ServletRequest --(继承)--> HttpServletRequest --(实现)--> org.apache.catalina.connector.Re ...
- ideal pom文件安装到maven库中_java学习之web基础(14)Maven基础学习
maven 介绍 Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM: Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle) ...
- java子类代码块_java中父类子类静态代码块、构造代码块执行顺序
父类静态(代码块,变量赋值二者按顺序执行) 子类静态 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 普通方法在实列调用的时候执行,肯定位于上面之后了 //父类A public class ...
- java的开发步骤_Java学习1:JAVA开发的步骤
JDK(Java开发工具箱,做Java开发必须安装的,这是最根本的一个环境.) JDK不是集成开发环境. JDK这个开发工具箱中时Java最核心的库. 98年的时候:Java升级到JDK1.2,Jav ...
- java默认代码地址_Java 8默认方法可能会破坏您的(用户)代码
java默认代码地址 乍一看, 默认方法为Java虚拟机的指令集带来了一个很棒的新功能. 最后,库开发人员能够开发已建立的API,而不会对其用户代码造成不兼容性. 使用默认方法,当将新方法引入该接口时 ...
最新文章
- 《Oracle高性能自动化运维》一一3.3 Redo产生场景
- 用GDB调试Segmentation Fault错误
- 毕设日志——Linux服务器状态查询命令
- linux 输出数据到csv,Linux-从外壳输出CSV文件
- jQuery1.11源码分析(8)-----jQuery调用Sizzle引擎的相关API
- 图像增强︱window7+opencv3.2+keras/theano简单应用(函数解读)
- LNMP 常见问题(FAQ)
- leetcode探索动态规划(一)
- 部署VC2008应用程序
- 【最详细】最全java面试题及答案(210道)
- html5魔塔样板快速上手,《梦幻模拟战》魔塔攻略|先人一步,快速上手梦战自走棋指南...
- mysql数据库西里尔文乱码_使用Python从MySQL读取西里尔文utf8符号不正确
- 软件测试度量分析,软件测试缺陷度量分析
- C#--扁平化窗体UI
- 安科瑞配电列头柜产品XXX数据中心案例分享
- AIX报错(errpt)处理小记
- c语言程序的流程控制语句,三 C语言流程控制语句
- 23、账号与权限管理
- HTML5 2D 游戏开发(一): Snail Bait 简介
- VehicleDynamicsAndCoontrol(四) -LONGITUDINAL VEHICLE DYNAMICS