将用户在注册界面中的数据填充到数据库相对应的表格中。当用户再次登录时,从数据库中拿到相应的数据查询并与页面的数据做对比,判断是否登陆成功。

需要在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">
<%-- 错误信息显示 --% >
&nbsp;&nbsp;&nbsp;
<%=request.getAttribute("loginError")==null?"":request.getAttribute("loginError")%>
</div>
<label><inputtype="checkbox">自动登录
</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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完成简单登录的更多相关文章

  1. 纯JSP实现简单登录跳转

    1.JSP介绍 JSP即Java Server Pages,JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑.网页还能通过tags和script ...

  2. 使用Eclipse开发Web项目(JSP)——简单登录、无sql

    1.使用Eclipse开发Web项目(JSP) tomcat 2.在Eclipse中创建的Web项目: 浏览器可以直接访问webContent中的文件 例如http://localhost:8080/ ...

  3. jsp+servlet+mysql 实现简单的银行登录转账功能

    jsp+servlet+mysql 实现简单的银行登录转账功能 [前期的准备] html(登录界面),servlet(处理业务逻辑),jsp(主要实现界面),mysql(实现与数据库的简单的交互)先从 ...

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

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

  5. JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册

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

  6. 基于Servlet+JSP+JavaBean开发模式的用户登录注册

    http://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...

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

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

  8. JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

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

  9. jdbc+servlet+jsp实现登录验证

    基础知识准备:sql的增删改查. 新增:insert into 表名称(字段名.....)values(字段名....). 修改:update 表名称 set  字段名="新值" ...

随机推荐

  1. 【题解】Casting Spells(UVA1470)

    虽然训练指南上没有讲 Manacher--但是这题几乎就是一个裸的 Manacher啊-- 然而书上的标签是:有难度,配合数据结构 Manacher详解 题意 问给定字符串中最大的W串的长度.其中W串 ...

  2. AcWing 392. 会合

    一个思路不难,但是实现起来有点毒瘤的题. 显然题目给出的是基环树(内向树)森林. 把每一个基环抠出来. 大力分类讨论: 若 \(a, b\) 不在一个联通量里,显然是 \(-1, -1\) 若 \(a ...

  3. docker容器之间通过bridge进行通信

    创建用户自定义bridge docker network create my-net # 创建了一个名为"my-net"的网络 将容器加入到"my-net"中 ...

  4. ORACLE11g Dataguard物理Standby 日常巡检操作手册

    ORACLE11g Dataguard物理Standby日常巡检操作手册 编写:_____________校对:_____________日期:_____________ 目录1.DG环境的日常巡检 ...

  5. NMO not setuid-root (Unix-only)

    EM操作Reorganize Objects时提示的错误 错误提示: NMO not setuid-root (Unix-only) 解决方法: 1.停止EM emctl stop dbconsole ...

  6. SQL Server NULL值用法及处理详解

    用法如下: 1.如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录,这意味着该字段将以 NULL 值保存. 2.NULL 用作未知的或不适用的值的占位符. 3.定 ...

  7. 第一篇:docker 简单入门(一)

    本篇目录 写在最前面的话 docker概念介绍 镜像的概念.容器的概念 docker的安装介绍 写在最前面的话 由于此类文章博客园鉴定为简单文章,所以已经移到csdn[https://blog.csd ...

  8. Scala中的IO操作及ArrayBuffer线程安全问题

    通过Scala对文件进行读写操作在实际业务中应用也比较多,这里介绍几种常用的方式,直接上代码: 1. 从文件中读取内容 object Main { def loadData(): Array[Stri ...

  9. Java 方法内联

    什么是Java 方法内联? 我们先来看看普遍的内联函数含义.在维基百科中解释为: 内联函数:在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函 ...

  10. Redis5.0 主从模式和高可用 搭建和测试报告

    Redis 单机模式很简单,相关测试水文看这里 Redis5 压力测试结果反馈报告 必须的,今天接着写水文,写一写现在redis 支持的三种集群,主从模式,哨兵模式,Cluster模式,今天先搞主从模 ...