zoukankan      html  css  js  c++  java
  • 首次创建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. 服务器地址解析出了项目路径,所以代码中可以写相对路径

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

    学习中,博客都是自己学习用的笔记,持续更新改正。。。
  • 相关阅读:
    php json_decode无法处理解决方法
    jquery ajax怎么使用jsonp跨域访问
    jquery ajax怎么使用jsonp跨域访问
    查看xml源码的方法
    php array_push 与 $arr[]=$value 性能比较
    生成个性二维码方法
    PHP匿名函数的写法
    PHP rand和mt_rand 区别
    C++ 顺序表
    线索树的建立与遍历
  • 原文地址:https://www.cnblogs.com/Tunan-Ki/p/11723891.html
Copyright © 2011-2022 走看看