【web后端(四)】jsp、servlet_请求转发、请求派发

基于servlet文件上传步骤(前台jsp 后台 servlet) 文件上传代码 基于servlet文件上传 立即下载

请求转发的用处:

比如说我们登录验证,我们验证过了之后,服务器会把我们转到管理页面。如果验证不过,会把我们再继续转到登录页面。知道我们验证通过了,才会把我们转到管理页面。

 

请求转发

                                     

 

请求派发

                                  

 

xml文件

<?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>PostFormServlet</servlet-name>
        <servlet-class>edu.xalead.PostFormServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>OtherServlet</servlet-name>
        <servlet-class>edu.xalead.OtherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>PostFormServlet</servlet-name>
        <url-pattern>/pfs</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>OtherServlet</servlet-name>
        <url-pattern>/os</url-pattern>
    </servlet-mapping>
</web-app>

 

servlet2

package edu.xalead;

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 OtherServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //向客户端发送一个响应
        response.getWriter().println("Hello World !");
        //这里为了防止转发之后的servlet再写响应,
        //我们这里需要刷新一下。
        response.getWriter().flush();
    }
}

 

 servlet1

package edu.xalead;

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 PostFormServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       
    }

    //这里转给OtherServlet之后的内容,
    //需要用doGet方法处理。
    //因为,service判断请求中的method属性值,
    //如果是get,service就会调用doGet()方法,
    //如果是Post,就会调用doPost()方法。
    //所以,我们在转发的以后,
    //request里面的字符串没有变化,
    //方法还是不变。
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("utf-8");

        /**
         * 请求转发
         */

        //设置响应码:
        //在响应头里面,300~399是转发的响应码,
        //200~299是成功响应,
        //但是这里面还有细分。

        /*
         *这个是通过改头属性和响应码的方法转发
         */
            //这种转发的好处是可以实现跨域转发。
//      response.setStatus(302);
//      response.setHeader("location","http://www.sohu.com");
//      response.sendRedirect("http://www.sohu.com");//重定向




        /**
         * 请求派发:
         * 就是说,如果我们不跨域进行转发的话。
         * (这里不跨域的意思是,我们访问这个域里的seervlet,
         * 然后想转给这个域里头的另一个servlet。
         * 这里两个servlet所在的域名是一样的,都是localhost:8080。
         * 也就是这两个servlet都在服务器端的servlet容器里,
         * 没有必要经过客户端。)
         * 因为没有响应,所以A给B的request里的东西是不会丢的,因为没有响应。
         * (request里面放的请求的东西,在服务器端不响应是不会丢的。)
         */

        response.getWriter().println("Hi everybody!");

            //因为没有引用,我们要用web.xml里面的了路径来进行请求派发。
            //这里没有response(响应),
            //只能用request.getRequestDispatcher("/bbc")

            /*得到请求派发对象*/
        RequestDispatcher dispatcher = request.getRequestDispatcher("/os");

            //方法一:转发
            //这里forward需要向request.getRequestDispatcher()的括号里面的路径转。
            //但是forward里需要两个参数去进行派发。
            //我们这里如果是给index.jsp进行派发,
            //那么,在javascript里,
            //jsp和servlet我们可以看成是一样的,
            //都是处理请求和响应的。
            //而这里的request和response,
            //是未处理完的被服务端封装的客户端请求。
//      dispatcher.forward(request,response);
            //我们这里要注意,
            //写在响应后面的"Hi every body!"这个字符串在servlet响应并且刷新之后。
            //既不能显示在控制台底下,
            //也不能不能显示到浏览器里头的。
            //如果将响应写在前面,就会报错。
            //而如果没有下面的dispatcher.include(request,response);(include方法)
            //在页面同样也不会显示。
            //总结来说,就是用forward方法,
            //我们只能看到第一个转发的输出("Hello World !"),
            //而看不到第二个输出("Hi everybody!")。
//      response.getWriter().println("Hi everybody!");
//      response.getWriter().flush();

            //方法二:包含
            //这个方法与上面的转发不同的是,
            //在RequestDispatcher dispatcher = request.getRequestDispatcher("/os");之前的
            //第一个servlet响应结束了之后
            //(即转发第一个"Hi everybody!"字符串之后),
            //服务端会接着通过"/os"路径用include方法执行第二个servlet响应
            //(即转发"Hello World !"字符串之后)。
            //最后,再去响应dispatcher.include(request,response);
            //后面的servlet响应(即转发"Hi everybody!"字符串)。
            //结果就是两个servlet的输出,都输出到客户端了,
            //形成了一种包含的关系。
        dispatcher.include(request,response);
        response.getWriter().println("Hi everybody!");

        System.out.println("asdfsdasdafafdsa");
    }
}

 

include方法响应的的客户端结果 

JSP向后台传递参数的四种方式总结 Jsp页面传值的方法 一、通过Form表单提交传值 客户端通过Form表单提交到服务器端,服务器端通过 Java代码 request.getParameter(String xx); 来取得参数(xx)为参数名称。 通过get/post方式进行提交 二、通过隐藏域传值 通过在表单中加入一个隐藏域来提交到服务器端,这种方式的好处是可以在客户端加入一些自己想要加入的参数,以便得到相应的值。 客户端代码: Java代码 <input type=”hidden” name=”id” value=””/> 服务器端取值: Java代码 String id=request.getParamete 立即下载

相关推荐

STM32L476低功耗实战:LPTIM精准定时唤醒STOP2模式与系统级功耗优化

本文深入探讨了STM32L476低功耗实战技巧,重点解析了LPTIM精准定时唤醒STOP2模式的配置与优化。通过详细的步骤指南和实战经验分享,帮助开发者实现系统级功耗优化,特别适合电池供电设备开发。文章涵盖LPTIM1定时器配置、STOP2模式进入流程及常见问题排查,助力将整机功耗降至8.2uA级别。

weixin_33686714的博客 435

利用servlet中service()方法派发任务

Servlet中的service方法用于应答浏览器请求,每次请求都会调用该方法。一般情形下,service是用来转向的,所以我们一般写一个servlet,只需要重写doGet或者doPost就可以了(一般不重写Service是因为service方法自己实现了缓存协商的机制,如果我们重写它,反而将这中良好的机制给去掉了。) 如果重写了service方法,那么servlet容器就会把请求交给这个方法来处理那么此时service就不是用来转向的,而是用来处理业务的,现在不论你的客户端是用p...

weixin_46983245的博客 531

手把手教你逆向京东搜索接口:H5ST 556位参数生成与V8补环境技巧

本文深入解析了京东搜索接口中关键的H5ST 556位参数生成机制,并提供了详细的逆向实战指南。针对其复杂的反爬虫环境检测,文章重点介绍了通过链式补环境技巧,在Node.js中完整模拟浏览器环境(包括原型链检测和指纹验证)的方法,帮助开发者成功绕过防护并生成有效参数。

weixin_29315091的博客 480

JSP/Servlet||请求派发与重定向的理解

Response对象在请求头中设置转发属性 //把响应头中的状态码改为302 response.setStatus(302); //在请求头中设置location属性为要转发的路径 response.setHeader("location","http://www.sohu.com"); 这类请求首先客户端发起初始请求 http://localhost:8080/abc(我们定义的路径) 这...

JockLiu的博客 534

如何用Arduino和HX711压力传感器制作一个简易电子秤(含OLED显示)

本文详细介绍了如何使用Arduino、HX711压力传感器和OLED显示屏制作一个简易电子秤。从硬件连接到软件编程,提供了分步教程,包括核心元件功能解析、接线方法、库安装、模块测试以及关键的校准流程。项目实践性强,适合创客和DIY爱好者学习嵌入式系统与传感器应用。

tea88的博客 536

大模型推理常见采样策略:Top-k, Top-p, Temperature, Beam Search

大模型推理采样策略,举例通俗易懂汇总介绍

qq_43243579的博客 2万+

JSP 请求转发

一、使用jsp:forward动作标签 jsp:forward动作把请求转到另外的页面,改标签可以添加在 JSP 的任意位置,同 Servlet 一样,当JSP编译阶段时编译该标签时,忽略原来页面的所有响应正文,直接将请求转移到指定页面,这一点用 Servlet 的 RequestDispatcher.forward()是一样的; <%--忽略本JSP文件的所有响应正文,直接将请求跳转到路径为"/target.jsp"的文件--%> <jsp:forward page="target.js

m0_57001255的博客 2980

Maxwell涡流热损计算:铜导体在50Hz交流下的仿真实践

本文详细介绍了使用Maxwell软件进行铜导体在50Hz交流条件下的涡流热损仿真实践。从涡流热损的基本概念到Maxwell仿真设置、网格划分、结果后处理等关键步骤,提供了实用技巧和常见问题解决方案,帮助工程师准确计算涡流热损,优化电力设备设计。

weixin_42526015的博客 389

servlet 请求派发与重定向的区别理解

请求派发与重定向相同点: 两者均能指向内部地址,在网页设计中经常遇到这种场景,如在登录过程中判断用户是否登陆过,如果没登录过,则可以指向登录界面 请求派发与重定向不同点: 1.请求指派只能指派到内部地址,而重定向既可以指派的内部地址又可以指派到外部地址。 2.请求指派指派过程中url不变,用户无法感知,重定向url会改变 请求派发与重定向实现语法:

sunrise_zhu的专栏 3462

11、ThingsBoard集群部署k8s

今天终于有时间去搞这个啦,拖了很久了,一直没时间,因为我本地没有那么多机器资源,开虚拟机不够,如果租用阿里云服务器,需要有充值的时间,因为这个费用是按小时付费,需要有连贯的时间来搞才行,今天恰好有时间,就开始搞了,弄成功搞出来了,特地写博客记录下来。

AldrichEugene 990

04-协议基础03:USB 2.0信号与电气特性

USB 2.0使用两根差分信号线D+/D-进行数据传输,支持低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)三种速率。USB总线为主从模式,所有事务由Host发起。端电阻值作用HostRpd(D+)15KΩ±5%下拉,默认低电平HostRpd(D-)15KΩ±5%下拉,默认低电平全速设备Rpu(D+)1.5KΩ±5%上拉到3.3V,标识全速低速设备Rpu(D-)1.5KΩ±5%上拉到3.3V,标识低速USB 2.0硬件要点。

内核笔记 102

JSP中的request篇(发往指定界面)

兄弟姊妹章节: 页外目录链接: ---------------------------<session篇>---------- 本章学习目录 问题的引出:我们如何在jsp页面得到servlet层的数据(结合实例,我们要将在servlet层得到的数据展示在浏览器界面下) 问题的解决:通过先将对象存入一个request对象中,然后再将requeat对象发往jsp文件下 页内目录 一,先将对象放入request对象中并发往指定jsp文件 二,在jsp文件下接收对象 三,该方法在servlet层的

an_gentle_killer的博客 1722

告别第三方控件!C#实现OPC UA客户端,对接工业设备超简单

C#实现OPC UA客户端无需依赖第三方商业控件,通过快速起步:通过NuGet安装,使用模拟器完成前期开发测试;复用性强:封装通用工具类,支持连接、读写、订阅等核心功能,可直接集成到各类上位机项目;界面友好:通过WinForm绑定工具类,实现可视化操作,适配工业现场人员使用;工业适配:支持安全配置、身份验证,联调步骤清晰,可快速对接西门子、欧姆龙等主流工业设备;稳定性高:具备资源释放、异常处理、线程安全UI更新等特性,满足工业7×24小时运行要求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1361

JSP、Servlet:重定向和请求转发

web项目 1、重定向 Response对象在请求头中设置转发属性 //把响应头中的状态码改为302 response.setStatus(302); //在请求头中设置location属性为要转发的路径 response.setHeader("location","http://www.sohu.com"); (1)这类请求首先客户端发起初始请求 http://localho...

嘉会的博客 390

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Servlet转发或重定向到jsp页面后css样式和jsp消失

问题            当我们在引用外部样式和js时,我们在后台处理完数据后,转发或重定向到jsp页面时就会出现样式丢失的情况,我们通过引用时写的是相对路径,而不是决定路径。 例如:         一个修改页面,直接在地址栏请求该修改页面,则样式没有丢失。       当我从一个Servlet中转发到这个修改的页面时,样式丢失了。 原因            请求时多加一...

qq_41355627的博客 6483

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jsp中Servlet处理请求后转到…

原文地址:jsp中Servlet处理请求后转到一个jsp页面的解决办法作者:飞舟jsp中的Servlet处理请求后一般都会做请求重定向或转发的处理,很多初学者会碰到很多问题,通过本人的总结,给出以下解决办法: 1.重定向:一般我们要根据我们的Web应用名称来写,如重定向到WebRoot根目录下的login.jsp,我们可以这么写,response.sendRedirect("/Web应用名称/l

深爱着--- 799

JAVA Web_定义Servlet_ 2 学生登录验证Servlet

书接上文:如何处理POST请求?! 看懂表单代码?! 实现基本表单收集?!

2301_80682565的博客 1150

JSP 相关试题(四)

简答 1、有人说:servlet和 JavaBean都是java类,可以互换使用,请您回答,在MVC中,控制器部分是否可以使用JavaBean完成?为什么? 不能。因为javabean是普通的java类,MVC中的servlet要完成从客户端接收数据,采用的servlet是HTTP协议,而普通的javabean不能完成该功能。 2、有人说:JSP是Servlet的高级实现,在MVC中,控制器...

weixin_33816946的博客 763

java过滤器派发请求_Servlet过滤器

什么是过滤器?过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择:①以常规的方式调用资源(即,调用servlet或JSP页面)。②利用修改过的请求信息调用资源。③调用资源,但在发送响应到客户机前对其进行修改。④阻止该资源调用,代之以转到其他的资源,返回...

weixin_39888943的博客 236

java servlet 请求_[Java教程]使用Servlet处理HTTP请求

[Java教程]使用Servlet处理HTTP请求0 2016-03-28 00:00:15 当服务器接收到一个HTTP请求,判断请求的是静态网页还是动态网页如果是静态网页则由服务器查询资源文件并响应给客户端,如果是动态,交由web容器处理web容器找到对应的Servlet,调用HttpServlet的service(),再调用一个实例对象的service(),再具体调用d...

weixin_36287955的博客 444

Servlet请求转发

没有办法直接访问WEB-INF 可以通过请求跳转的方式进行 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取请求的参数(办事材料)查看 String username = req.getParameter("username"); System.out.println("在

weixin_49321034的博客 230

Web组件:Servlet

servlet:多线程、单例模式组件,由容器(tomcat)管理 java Servlet类库体系: //servlet-api.jar ServletConfig(接口) + Servlet(接口) GenericServlet HttpServlet Servlet目录组成:/tomcat/webapps/项目名 html,css,js [WEB-INF

Cool.Cool.Cool.Cool.Cool 677

Servlet之HTTP请求处理

前言                      前一篇文章了解了Servlet是如何进行开发的,这篇文章笔者将实际进入Servlet开发,进行一些                                 简单的逻辑的处理。此次分析的是Servlet对HTTP请求的处理和对表单的处理。                                            下面H

LCore的专栏 7501

【web后端(五)】jsp、servlet_request在组件间传递数据

xml文件 <?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=...

LED_of_Java的博客 370

【web后端(十九)】jsp、servlet_内置标签——include

在了解动态包含之前,我们先看看静态包含的源码: 首先,我们要将该窗口中的几个文件拷贝到tomcat文件下的web文件里头: 然后,我们启动tomcat的服务: 因为我们不是在idea中打开,所以我们要在文件名(IncExample.jsp)和根目录(/)中间加上拷贝文件的存放文件夹(web): 我们在客户daunt访问IncExample.jsp文件之后,...

LED_of_Java的博客 332
上一篇: 【web后端(三)】jsp、servlet_doPost_上传照片
下一篇: 【web后端(五)】jsp、servlet_request在组件间传递数据
寻爻青年
博客等级 码龄8年 27粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻爻青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值