zoukankan      html  css  js  c++  java
  • jsp-servlet 的相关请求路径问题 —url

    jsp-servlet 的相关请求路径问题  —url

     


     

    本文章主要解决的几方面问题如下:

    1. 常见涉及路径元素;
    2. jsp页面请求和servlet请求转发、重定向的关系
    3. 如何避免下一步请求受上一步请求在URL方面的问题

    常见涉及路径元素:

    1. 表单中的action属性 ,其值是提交表单的请求。action中指向的路径与最终请求的页面或servlet关系不大,比如可以指向html页面,可以指向jsp页面(当然,从某方面来讲,两者是一样的,也可以写serlet的urlPatterns指定的位置。)
    2. 重定向。先看代码
      response.sendRedirect("Jsp/Login.jsp");

      此处的重定向实现的是:让服务器对客户端进行响应,并让客户端对project_name/jsp/Login.jsp页面重新请求。显示的url为新的请求的url

    3. 请求转发。先看代码
      request.getRequestDispatcher("Jsp/Home.jsp").forward(request, response);

      此处的请求转发实现的是将请求转发到project_name/jsp/Login.jsp页面.显示的url是该servlet的url,即可以看出在servlet中进行了处理

    jsp页面请求和servlet请求转发、重定向的关系:

    表单请求会携带表单信息,其中get方式信息在url中,post方式是在请求体当中。而在开发工作中,经常会在servlet中进行获取,根据信息判断进行相应的处理,之后再来进行请求或转发。典型的代表就是登陆表单的验证,密码正确转发到下一步,密码错误重定向到登录界面。

     

    如何避免下一步请求受上一步请求在URL方面的问题:

    假如在servlet的注解为

    @WebServlet(name = "LoginServlet", urlPatterns = "/LoginServlet")
    public class LoginServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    response.getWriter().append("Served at: ").append(request.getContextPath());

    if ("密码正确的代码") {
    request.getRequestDispatcher("Jsp/Home.jsp").forward(request, response);
    } else {
    response.sendRedirect("Jsp/Login.jsp");
    }
    }

    表单action为 

    action="LoginServlet"

    那么在第一次就密码正确可以登录,可是第一次错了重新输入后登录就吹出现路径问题

    原因是重定向后客户端发出的请求与正确的servlet 的urlPatterns值不一致。解决办法就是将表单的请求从根目录开始,即

    action="/Personal_name/LoginServlet"

    备注:

    1.  路径中默认的是 ./ 表示当前目录

    2.  ../表示上一级目录
    3.  / 表示根目录 
  • 相关阅读:
    项目架构工具选择
    idea 引入本地jar包
    java 二维/三维/多维数组
    Windows 远程连接
    SQL SERVER 本地同步数据到远程数据服务器
    利用sp_addlinkedserver实现远程数据库链接
    ORACLE 手动添加时间分区
    ORACLE 时间段
    shiro异常简述
    kvm虚拟机克隆
  • 原文地址:https://www.cnblogs.com/StevenZheng/p/10700705.html
Copyright © 2011-2022 走看看