首次创建Servlet和验证登录eclipse

Posted tunan96

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了首次创建Servlet和验证登录eclipse相关的知识,希望对你有一定的参考价值。

servlet处理请求的流程

第一次向服务器发送请求 点超链接 请求连接MyFirstServlet 请求发送到服务器

服务器从Web.xml中查找映射是否有跟请求的对应的MyFirstServlet 这个请求让

谁处理请求 找到一起在映射中的HelloServlet找到servlet中的HelloServlet,

然后找到接口的全限定名,找到HelloServlet,然后调用init,service,

返回service中的字符串

创建Servlet

第一步右击项目栏创建动态项目

 

 

 

 

 

 

 

第二步在动态项目下的src中创建servlet包路径

 

 

 

 

 

 

 

 

第三步在包路径下创建servlet类

 

 

 

 

 

 

 

 

如果没有setvlet类的话,可以在

windows->Perspective->Customize Perspective->Shorcuts->Web下 勾选Servlet即可

 

 

 

 

第四步删除不必要的信息,最终效果如下

 

 

 

 

注意doPost方法,实际上也是调用doGet方法

Request和Response的作用

Request的作用:

  1. 获取html页面的请求参数à (String username = request.getParameter("username");)
  2. 获取项目的虚拟路径à (String contextPath = request.getContextPath();)
  3. 转发
    1.   获取转发器à (RequestDispatcher requestDispatcher = request.getRequestDispatcher("success.html");)
    2.   进行请求的转发à(requestDispatcher.forward(request,response);)

response的作用

  1. 给浏览器响应一个字符串或者一个页面à (PrintWriter writer = response.getWriter();
  2. 重定向à (response.sendRedirect("success.html");)

 

注意中文乱码问题:

  1. get请求的中文乱码问题的解决方案:在server.xml的配置文件中的第一个Connector标签中添加属性URIEncoding="UTF-8" 65行
  2. post请求在请求时中文乱码的问题解决方案:在第一次获取请求参数之前设置字符集为UTF-8
  3. response响应中文乱码解决方案:在获取流之前设置响应数据的类型-->text/html;charset=UTF-8
  4. request请求中文乱码解决方案:在请求前添加代码-->request.setCharacterEncoding("utf-8");

 

转发和重定向的区别

  1. 转发发送一次请求,重定向发送两次请求
  2. 转发浏览器地址栏地址无变化,重定向浏览器地址栏地址有变化
  3. 转发可以访问WEB-INF目录下的资源,重定向不可以访问WEB-INF目录下的资源
  4. 转发可以共享request域中的数据,重定向不可以共享request域中的数据

注意:

如果登录账号密码是正确的用重定向

如果登录账号密码是错误的用转发

登录功能之服务端的准备

创建相应数据库的用户表

 

 

 

创建Java对应数据库的实体类

 

 

 

导入mysql连接java的Jar包

 

 

 

导入commons-dbutils的Jar包(暂不理解用处)

 

 

 

导入druid的Jar包(暂不理解用处)

 

 

 

添加JDBCUtils连接功能实体类

 

 

 

添加BasicDao查询功能实体类

 

 

 

添加数据库连接用的properties文件

 

 

 

创建查询账号密码的dao接口

 

 

 

实现dao接口

 

 

 

创建测试类(直接在测试包下创建测试类)

 

 

 

 

 

 

 

测试数据库和Java的连接

 

 

 

 

 

登录功能之Web端的准备

第一步创建index.html页面

 

 

 

第二步创建pages/login.html页面

 

 

 

第三步创建login_success.html页面

 

 

 

页面整体执行流程:

打开tamcat服务器自动打开index.html首页,点击登录用户,跳转登录页面,输入账号密码提交到servlet(action中的LoginServlet就是servlet服务器所在的页面,提交这个页面等同提交到servelt),在servlet中获取账号密码并验证,验证成功重定向到longin_success.html页面,验证失败转发到登录页面(其中的路径问题后面再讲)

 

登录功能之前后端交互

第一步

首先在src下创建servlet包,创建servlet类,创建成功后打开WebContent/WEB-INF/web.xml文件,把映射地址写入登录页面的from表单的action地址

 

 

 

第二步

通过request.getParameter()方法获取登录页面传入的参数

 

 

 

第三步

通过创建dao接口的多态传入登录页面的参数从数据库中查找并返回对象

 

 

 

 

第四步

判断返回的对象如果不为null,则说明前端传入的参数正确,重定向页面

 

 

 

第五步

判断的结果如果为null,则说明前端转入的参数不正确,转发页面

 

 

 

总体执行流程如下:

 

 

 

关于项目中的路径问题

在动态Java项目中前端页面解析的路径和服务器解析的路径不一致

以 / 开头的路径即为绝对路径,绝对路径中的 / 代表什么?

       如果路径由浏览器解析,那么 / 就代表http://localhost:8889/

              哪些路径由浏览器解析?

                     1). HTML标签中的路径,如a标签中的href属性中的路径、form标签中的action属性中的路径等

                     2). 重定向中的路径

       如果路径由服务器解析,那么 / 就代表http://localhost:8889/Web_Ex/

              哪些路径由服务器解析?

                     1). web.xml配置文件中的url-pattern标签中的路径

                     2). 转发中的路径

针对路径问题对项目作出修改,以下是修改后的代码:

  1. Html(index.html、login.html、login_success.html)页面中的base标签中的href属性可以让当前页面中的相对路径变成绝对路径

 

 

 

  1. 重定向中加入代码request.getContextPath()获得项目路径(/Web_Ex)

 

 

 

  1. 服务器地址解析出了项目路径,所以代码中可以写相对路径

外界导入动态项目时常见的问题及解决

 

以上是关于首次创建Servlet和验证登录eclipse的主要内容,如果未能解决你的问题,请参考以下文章

创建一个JavaWEB项目——Servlet验证MySQL数据库实现登录

从mysql数据库登录验证servlet

java web多组件协作实现用户登录验证

java登录验证码

首次成功调用 REST 后,未验证 HttpClient 上的凭据

用于登录的身份验证过滤器和 servlet