码迷,mamicode.com
首页 > 系统相关 > 详细

首次创建Servlet和验证登录【eclipse】

时间:2019-10-23 09:16:56      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:comm   中文乱码   success   charset   code   发送   xml文件   color   添加   

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】

标签:comm   中文乱码   success   charset   code   发送   xml文件   color   添加   

原文地址:https://www.cnblogs.com/Tunan-Ki/p/11723891.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!