servlet+jsp完成简单登录
将用户在注册界面中的数据填充到数据库相对应的表格中。当用户再次登录时,从数据库中拿到相应的数据查询并与页面的数据做对比,判断是否登陆成功。
需要在HTML文件中将form表单上的action属性值设置为web项目名加处理数据的servlet文件。
1.导入相应的jar包,MySQL,c3p0,BeanUtils,页面的文件和图片等。
2.按照数据库中表单的相应数据创建JavaBean
3.设置相对应的编码格式
4.利用BeanUtils.populate(user,map名称)将注册表单的信息与javaBean对象形成一一对应关系(工作原理:将map中key的名字与实体属性的名字对比user,如果一样就将map的value封装到实体user中去)
5.编写业务将user对象作为参数传给register方法,连接数据库,编写SQL语句,执行update方法。
post提交乱码问题的解决方法:
Request.setCharacterEncoding("UTF-8");
get提交遇到乱码问题
1.拿到乱码的字段
2.将乱码设置成iso8859-1编码格式,
3.在将编码后的用utf-8解码
例如:username输入中文时遇到乱码,将username=new String(username.getBytes("iso8859-1"),"utf-8");
这种解决方式同样适用于post提交。
注册用户核心代码:
有关的servlet核心代码如下:
Protected void doPost(HttpServletRequestrequest,HttpServletResponseresponse)throws ServletException,IOException{
//设置编码格式
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
//获得提交的参数返回一个map集合,并通过beanutils.populate方法将参数映射到一个user对象中
Map<String,String[]> map = request.getParameterMap();
User user=new User();
try{
BeanUtils.populate (user,map);
}catch(IllegalAccessExceptione){
e.printStackTrace();
}catch(InvocationTargetExceptione){
e.printStackTrace();
}
//设置随机ID
user.setUID(UUID.randomUUID().toString());
//编写业务代码,用Druid连接数据库,插入数据
Properties properties=new Properties();
properties.load(JdbcUtils.class.getClassLoader().getResourceAsStream("properties.properties"));
DataSource dataSource = null;
try{
dataSource = DruidDataSourceFactory.createDataSource(properties);
}catch(Exceptione){
e.printStackTrace();
}
QueryRunner queryRunner= new QueryRunner(dataSource);
String sql="insert into register_user values(?,?,?,?,?,?,?,?)";
Int i=0;
try{
i=queryRunner.update(sql,user.getUID(),user.getUsername(),user.getPassword()
,user.getEmail(),user.getName(),user.getTelephone(),user.getSex(),user.getBirthday());
}catch(SQLExceptione){
e.printStackTrace();
}
if(i==1){
//注册成功,重定向到登录界面
response.sendRedirect("login.jsp");
}else{
//注册失败,转发并显示错误信息
response.getWriter().println("注册失败!");
}
登录页面:<formaction="LoginServlet"method="POST">
核心代码:
<divclass="lg_m_1">
<fontsize="3px">用户名:</font><inputname="username"value=""type="text"class="ur"placeholder="请输入用户名"/></br>
<fontsize="3px">密码:</font><inputname="password"type="password"value=""class="pw"placeholder="请输入密码"/>
<divstyle="height:20px">
<%-- 错误信息显示 --% >
<%=request.getAttribute("loginError")==null?"":request.getAttribute("loginError")%>
</div>
<label><inputtype="checkbox">自动登录
</label> <label><input
type="checkbox">记住用户名
</label>
loginServlet核心代码:
@WebServlet("/LoginServlet")
Public class LoginServlet extends HttpServlet{
Protected void doPost (HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
//1.获取登陆时的参数
String username=request.getParameter("username");
String password=request.getParameter("password");
//2.与数据库的数据对比
//3.如果登陆成功,重定向首页,失败,转发提示登录错误信息
User login=login(username,password);
if(login==null){
request.setAttribute("loginError","用户名或密码错误!");
request.getRequestDispatcher("login.jsp").forward(request,response);
}else{
response.sendRedirect(request.getContextPath());
}
}
Protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
doPost(request,response);
}
Public User login(String username,String password){
Properties properties=new Properties();
try{
properties.load(JdbcUtils.class.getClassLoader().getResourceAsStream("properties.properties"));
}catch(IOExceptione){
e.printStackTrace();
}
DataSource dataSource=null;
try{
dataSource=DruidDataSourceFactory.createDataSource(properties);
}catch(Exceptione){
e.printStackTrace();
}
QueryRunner queryRunner=new QueryRunner(dataSource);
String sql="select*from register_user where username=? And password=?";
User user=null;
try{
user=queryRunner.query(sql,new BeanHandler<User>(User.class),username,password);
}catch(SQLExceptione){
e.printStackTrace();
}
return user;
}
servlet+jsp完成简单登录的更多相关文章
- 纯JSP实现简单登录跳转
1.JSP介绍 JSP即Java Server Pages,JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑.网页还能通过tags和script ...
- 使用Eclipse开发Web项目(JSP)——简单登录、无sql
1.使用Eclipse开发Web项目(JSP) tomcat 2.在Eclipse中创建的Web项目: 浏览器可以直接访问webContent中的文件 例如http://localhost:8080/ ...
- jsp+servlet+mysql 实现简单的银行登录转账功能
jsp+servlet+mysql 实现简单的银行登录转账功能 [前期的准备] html(登录界面),servlet(处理业务逻辑),jsp(主要实现界面),mysql(实现与数据库的简单的交互)先从 ...
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
http://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...
- javaweb(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- jdbc+servlet+jsp实现登录验证
基础知识准备:sql的增删改查. 新增:insert into 表名称(字段名.....)values(字段名....). 修改:update 表名称 set 字段名="新值" ...
随机推荐
- 区块链产业发展热潮来袭,Panda Global 认为体验、安全是关键词
作为一项近些年才发展起来的新型技术,区块链自诞生之日起就备受关注,凭着去中心化.不可篡改.信息透明等多种关键特点,已成为变革传统产业的一项有力创新手段.当区块链热潮再度袭来之时,知名数字货币交易所Pa ...
- JavaScript:使用递归构建树型菜单
使用递归函数将扁平数据转为树型结构,并渲染到页面 效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> ...
- 剑指Java高效编程教程
教程介绍 所谓"武以快为尊,天下武功唯快不破".本课程剑指Java高效编程,致力于从"技术"和"工具"两大 维度提高编程效率,帮助广大程序员 ...
- 职场中究竟什么是ownership,你是一个有ownership的人吗?
在互联网行业,我们经常用一个标准去评价一个人,这个标准就是ownership.一个有ownership的员工往往会被认为是出色的,被委以重任,从此升职加薪.而一个被打上了没有ownership的人,往 ...
- common 模块的 context.py
1.context.py 是写正则表达式的,源码如下: import re#s 是目标字符串#dict 是替换的内容#找到目标字符串里面的标识符KEY,去d里面拿到替换的值#替换到s 里面去,然后仔 ...
- Nginx(三):反向代理,负载均衡
环境准备 配置反向代理,负载均衡,动静分离需要的必备环境,JDK,2个tomcat开启8080和8081端口. 安装jdk [root@localhost ~]# rpm -qa|grep jav ...
- ceph工作原理及安装
一.概述 Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目.随着云计算的发展,ceph乘上了OpenStack的春风,进而成为了开源社区受关注较高的项目之 ...
- rocketMq 消息偏移量 Offset
消息偏移量 Offset queue0 offset 0 0-20 offset 4 20-40 纠错:每条消息的tag对应的HashCode. queue1 offset 1 0-20 ...
- git使用下
Git 内部工作原理 Git 本质上是一个内容寻址文件系统,最初是一套面向版本控制系统的工具集,而不是一个完整的用户友好的版本控制系统.因此它还包含了一些用于完成底层工作的命令,这些命令被称为&quo ...
- [leetcode]21Merge Sorted ListNode递归合并顺序链表
/** * Merge two sorted linked lists and return it as a new list. * The new list should be made by sp ...