Javaweb-服务器内部转发

GET请求有哪些:

1、form标签method=get
2、a标签
3、link标签引入css
4、script标签引入js文件
5、img标签引入图片
6、iframe引入 html页面
7、在浏览器地址栏中输入地址后敲回车

POST请求有哪些:

1、form标签method=post

b)HttpServletRequest类的常用方法

i. getRequestURI()					获取请求的资源路径
ii. getRequestURL()					获取请求的统一资源定位符(绝对路径〉
iii.getRemoteHost()					获取客户端的ip地址
iv. getHeader()						获取请求头
v. getParameter()					获取请求的参数
vi.getParameterValues()				获取请求的参数(多个值的时候使用)
vii.getMethod()						获取请求的方式GET 或POST
viii.setAttribute(key , value);		设置域数据
ix. getAttribute(key );				获取域数据
x. getRequestDispatcher()			获取请求转发对象

服务器内部转发

是一次请求响应的过程,对于客户端而言,服务器内部经过了多少次转发,客户端是不知道的;
客户端发出请求(地址指向Servlet1),该请求由Servlet1接收,然后Servlet1将请求转发到Servlet2,由Servlet2执行请求,执行完后将响应的数据发送给客户端。
在这里插入图片描述
在浏览器上进行访问时在链接时输入
在这里插入图片描述
?后面的是传入的数据,username=sadmsda用于读取。

创建一个Java程序用于读取数据,并在内部实现转发。

package com.atguigu.servlet;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Servlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	//在servlet1中可以读取到传入的数据username
        String username = req.getParameter("username");
        System.out.println("在柜台1中查看参数:"+username);
        //设置域数据,这个域数据在一次服务中,是可以一直访问的,用来证明这个由servlet1转发到servlet2,
        req.setAttribute("key","柜台1已确认");
        //转发到servlet2
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2");
         requestDispatcher.forward(req,resp);
    }
}

Servlet2

package com.atguigu.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Servlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	//在Servlet2中也可以查询username的数据
        String username = req.getParameter("username");
        System.out.println("在柜台2中查看材料:"+username);
		//查询域数据
        Object key = req.getAttribute("key");
        System.out.println("柜台1是否确认可行:"+key);
        System.out.println("柜台二执行操作");
    }
}

在项目中的web中的WEB-INF下的xml文件中配置Servlet1和Servlet2

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>Servlet1</servlet-name>
        <servlet-class>com.atguigu.servlet.Servlet1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet1</servlet-name>
        <url-pattern>/servlet1</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Servlet2</servlet-name>
        <servlet-class>com.atguigu.servlet.Servlet2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet2</servlet-name>
        <url-pattern>/servlet2</url-pattern>
    </servlet-mapping>
</web-app>

在这里插入图片描述

Web中‘/’斜杠的不同意义

1、 在web中/斜杠是一种绝对路径。
2、/斜杠 如果被浏览器解析,得到的地址是:http://ip:port/
3、/斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径
1、<ur1-pattern> / servlet1</url-pattern>
2、servletContext.getRealPath(“/”);
3、request.getRequestDispatcher(“”);
特殊情况:
response. sendRediect(“/");把斜杠发送给浏览器解析。得到http://ip:port/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值