jsp入门http工作原理

AD7768与STM32F439的硬件设计避坑指南:如何优化高精度ADC系统的电源与PCB布局 本文详细解析了AD7768与STM32F439在高精度ADC系统硬件设计中的关键问题与优化方案。从电源系统设计、PCB布局到基准电压选型,提供了实用的避坑指南和实测数据,帮助工程师提升系统性能至110dB动态范围。特别强调了SPI信号布线和电源滤波对ADC精度的重要影响。 阅读详情
 一 B/S结构,请求与响应
B/S结构,既浏览器(browser)和服务器(server),用浏览器查看JSP写的页面就算非常简单的B/S结构
(1).首先,浏览器分析我们输入的网址,并查找服务器的位置。
这里使用了http://localhost:8080/,浏览器会以HTTP协议,去访问localhost的8080端口,localhost时本机的别名,8080是tomcat的默认端口。
(2).查找服务器的位置,浏览器会向服务器发处一个请求(request),这个请求包含http协议所规范的数据。
(3).服务器接收请求,分析请求中的数据。
(4).服务器操作结束后,会生成一个响应(response),并把响应发送回客户端的浏览器。
(5).浏览器接收响应后,开始进行解析,然后运行,最后把结果显示给用户。
这个就是大概流程

http中一个重要特性就是:短连接,无状态
短连接是指:每请求和响应一次,服务器就和浏览器断开连接。
无状态是指:每次请求和响应之间,没有任何联系。
浏览器每发出一个请求,服务器才能返回一个响应。一个请求对应一个响应,每个过程都是独立的。并且服务器端是被动的,只能接收请求,然后向请求的原发地发送响应,如果没有请求,服务器没办法凭空发出响应出去,因为它不知道客户端在什么地方。
一个请求对应一个响应,而JSP是运行在服务器端的,这样我们就可以用JSP接收请求,然后返回响应。
request,它被称作九大隐士对象之一,与http请求相关的操作都是通过request来完成的,你可以把它看做是浏览器发送的http请求。
因为http协议的限制,获得的参数值都是字符串,不过参数名不存在的时候,也会返回NULL。

二中文乱码问题
(1).如何解决响应中的乱码
所谓响应中的乱码,就是显示页面上的乱码,因为页面的数据是从服务器端放入http响应中,然后发送回浏览器,如果响应中的数据无法被浏览器正常解析,就会出现乱码。
为什么英文没有问题呢?因为在iso-8859-1,gb2312,utf-8以及任意一种编码格式下,英文编码格式都是一样的,每个字符占8位。中文,在gb2312下一个中文占16位,两个字节,而在utf-8下一个中文要占24位,三个字节。浏览器在不知确定的编码方式情况下,就会把这些字符从中间截断,在显示时就成乱码了。所以,要解决乱码问题,就要在响应中,告诉浏览器的编码方式,浏览器就会用对应的方式来解析响应中的数据。

为了获得正常显示中文,需要注意一下几步:
(1).因为服务器首先要从本地读取JSP文件,然后写入到响应,所以我们首先要知道JSP文件的编码方式。
(2).windowxp下,文件的默认的编码方式时gb2312。
(3).我们要在http响应(response)中添加编码信息
< contentType="text/html;charset=gb2312"%>
还需要在html中制定编码方式
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312"/>
</head>
meta用来制定当前html的编码方式,注意这一段要放在head标签中,并且放到head标签的最前面,如果不是最前面可能会出问题,尤其是在title中有中文的情况下。

2.1 POST乱码
我们要在前面加上一条java语句,设置请求的字符编码。
<%request.setCharacterEncoding("gb2312")%>
2.2 GET乱码
超级连接,form的默认提交方式是get
post方式下的解决方式还算简单,因为post方式下的提交数据都是以二进制方式附加在http请求body后面,只需要在处理页面指定编码格式就足以。
而get方式下的提交是将参数附加到url后面,这部分参数无法使用request.setCharacterEncoding()处理,结果get形式的所有中文都变成了乱码。
这时再也没有简便方法了,只能对这些中文一个一个进行转换,使用new String(bytes, "gb2312")进行转码。
<%
    String username = request.getParameter("username");
    byte[' color='#ffff33' size='3'> bytes = username.getBytes("iso-8859-1");
    String result = new String(bytes, "gb2312");
    out.print(result);
%>
           
如我们所见,先从request中获得参数,接着把字符串按照iso-8859-1编码打散成byte数组,然后用gb2312编码组合成新字符串,最后打印出来就是正常的中文了。
写在一起就变成了:
<%
    String username=new String(request.getParameter("username").getBytes("iso-8859-1"), "gb2312");
%>
三 forward和redirect区别
1.forward 是客户端向服务器发送一个http请求,服务器接收请求并处理,然后转发服务器内的另一个页面,处理后在返回给请求页面,请求页面在响应客户端。
2.redirect 客户端向浏览器发送http请求,服务器接收请求后,响应一个包含url的地址给客户端,后然客户端在从轻请求服务器。
3.2 绝对路径和相对路径
(1) 如果使用的URL网址是以"/"开头的,那么这个网址就是绝对网址。
(2) 如果使用的URL网址不是"/"开头的,那么这个网址就是相对网址。

3.2.1 相对路径
您当前请求路径是http://localhost:8080/WebRoot/test/a.jsp,那么你当前的路径就是http://localhost:8080/WebRoot/test/,执行forward的时候会寻找当前路径下result/b.jsp
这里用到的就是相对路径,因为不时以"/"开头。
就好像时路径字符串的拼接
3.2.2 绝对路径
forward:
在本地测试时,forward把http://localhost:8080/WebRoot/当作根路径,在它的基础上计算绝对路径。
当使用绝对路径时,不再使用请求的作为当前路径,而是把网站根目录作为当前路径
使用forward跳转时不能让请求从一个项目直接在服务器内部跳转到一个项目
redirect:
在本地测试时,redirect把http://localhost:8080/当作根路径,在它的基础上计算绝对路径。
当使用绝对路径时,把容器当作当前路径,如果想在多个项目之间跳转,就只能使用redirect.

如果这些外部资源使用了相对路径,浏览器就会在当前请求路径的基础上,加上相对路径拼接出完整的http请求,发送给服务器。如果我们请求http://localhost:8080/WebRoot/test.jsp,浏览器得到的当前路径就是http://localhost:8080/WebRoot/,failure.jsp中图片的相对路径是lingo.png,那么拼接的结果是http://localhost:8080/WebRoot/lingo.png。
不要怪浏览器太傻,是因为使用forward的时候浏览器并不清楚这些改变。它一直认为,既然自己请求的是test.jsp,返回的自然就是test.jsp的内容,那么再使用test.jsp当作当前路径去计算相对路径当然没有问题。是我们欺骗了浏览器,在服务器偷偷改变了请求流向,返回了其他页面的内容

【APM】在Kubernetes中,使用Helm安装Grafana 9.5.1 Grafana是一款流行的开源数据可视化和分析平台,它特别擅长处理时序数据,即随时间变化的数据,因此在监控系统性能、应用程序指标、物联网(IoT)设备数据等领域有着广泛的应用。 阅读详情

相关推荐

Cisco Firepower FMCv修改管理Ip方法

Cisco Firepower FMCv修改管理Ip方法

funnycoffee123的博客 1091

jsp 内置对象HTTP协议

有些对象不用声明就能够在JSP页面的脚本部分使用,这就是JSP的内置对象。 JSP的内置对象有:request、response、session、application、out。下面我们将一一介绍。 Reponse和request对象是JSP的内置对象中较重...

weixin_30496431的博客 198

一次HTTP完整得请求过程

一次HTTP完整的请求过程 一,大致流程: 根据域名和DNS解析到服务器的IP地址(DNS+CDN) 通过ARP协议获得IP地址对应的物理机器得MAC地址 浏览器对服务器发起三次握手 建立TCP连接后发起HTTP请求报文 服务器响应HTTP请求,将响应报文返回浏览器 短连接情况下,请求结束通过TCP四次挥手关闭连接,长连接在没有访问服务器得若干时间后,进行连接关闭 浏览器得到响应信...

qq_40760617的博客 342

jsp

1、http://localhost:8080/jsp/ http://HTTP协议 localhost表示本地,如果访问其他主机的服务器,则替换为要访问主机的IP地址 8080表示当前服务器的端口号 /jsp表示要访问的项目(工程)的路径 /表示要访问的页面的路径,当前为默认路径2、http://localhost:8080/jsp/jsp/myNewJsp.jsp jsp/myNewJsp.j...

baidu_39495622的博客 286

接口调试必看:status显示canceled的3种常见原因及修复方法

本文深度解析了接口调试中status显示canceled的三种核心原因:网络层中断(如请求超时)、应用层逻辑主动取消(如请求竞态、组件卸载)以及用户交互与浏览器行为。文章提供了从诊断到修复的系统性方案,包括分析Network Timing、使用Axios CancelToken、优化请求策略与性能,帮助开发者从根本上解决这一常见问题。

bb456的博客 935

ARCGIS绘制全国各省PM2.5浓度图操作步骤

ArcGIS新手小白一枚,经常需要帮助老师绘制一些简单的空间图,利用ArcGIS绘制全国各省的pm2.5浓度图,简单又方便,不记下来会忘记~

weixin_43458484的博客 1万+

JSP学习之------>HTTP协议详解

Author :Jeffrey My Blog:http://blog.youkuaiyun.com/gueter/ 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它...

weixin_34234823的博客 184

Windows 10下用Python 3搞定Android源码下载:最新repo工具避坑指南

本文详细介绍了在Windows 10系统上,使用Python 3和官方最新repo工具下载Android源码的完整流程。文章提供了从Git安装、环境配置到repo工具初始化、同步加速及常见错误排查的避坑指南,帮助开发者高效搭建稳定的源码下载环境。

weixin_29266749的博客 436

动态网站JSP技术

目标:了解JSP的概念与特征,能够知道JSP用于做什么目标:初步了解JSP隐式对象在JSP页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象则会非常麻烦。为了简化Web应用程序的开发,JSP2.0规范中提供了9个隐式(内置)对象,它们是JSP默认创建的,可以直接在JSP页面中使用。在JSP页面中,经常需要处理一些异常信息,处理异常信息可以通过exception对象实现。exception对象是java.lang.Exception类的实例对象,它用于封装JSP中抛出的异常信息。需要注意的是,

hollow_future的博客 2855

在鸿蒙中使用AVPlayer完成视频的播放【坚果派】

播放的全流程包含:创建AVPlayer,设置播放资源和窗口,设置播放参数(音量/倍速/缩放模式),播放控制(播放/暂停/跳转/停止),重置,销毁资源。5.准备播放:调用prepare(),AVPlayer进入prepared状态,此时可以获取duration,设置缩放模式、音量等。8.退出播放:调用release()销毁实例,AVPlayer进入released状态,退出播放。6.视频播控:播放play(),暂停pause(),跳转seek(),停止stop() 等操作。今天我们来看一下视频如何正常播放。

坚果的博客 4054

ue 打包linux程序 在windows系统 2026

ue 打包linux程序 在windows系统 2026

jacke121的专栏 370

关于Qt中使用QFile打开文件时遇到问题的分析

项目场景: 在文件打开的时候,使用QFile的QIODevice的不同模式,会出现不同的表现(这是我一个同事当时遇到的问题,现在拿来分析分析,以下的所有事例代码均用于示范使用,有些内容因为不是特别重要就给抹去了,因此显得可能有些不规范,如果读者想要自己去实现的话,需要将其添加完整)。 问题描述: QFile的文件打开常用的集中方式包括只读、只写、读写等。当时我那个同事在使用QIODevice::ReadWrite或者是QIODevice::WriteOnly模式时,会出现文件打开失败的情况。 当时我挺好奇

“时光清浅,不觉多年”的博客 2万+

80、编程学习资源与x86知识全解析

本文详细介绍了编程学习中多个领域的优秀书籍和博客资源,涵盖逆向工程、C/C++、x86/x86-64架构、ARM、汇编语言、Java、UNIX、密码学等多个方向。同时,深入解析了x86架构的核心知识,包括术语、通用寄存器、FPU寄存器、SIMD寄存器、调试寄存器以及常用指令的使用方法和操作步骤。通过本文,读者可以系统地掌握底层编程知识,并应用于逆向工程、系统开发和性能优化等领域。

tree的博客 219

【狂神说Java】JavaWeb入门到实战(学习笔记)

学习来自B站 狂神说 JavaWeb视频: https://www.bilibili.com/video/BV12J411M7Sj?p=1 1.基本概念 1.1 前言 静态Web: 提供给所有人看数据不会发生变化! HTML,CSS 动态Web: 有数据交互,登录账号密码,网站访问人数等 技术栈:Servlet/JSP,ASP,PHP 在Java中,动态web资源开发的技术统称为JavaWeb; 1.2 Web 应用程序 Web 应用程序:可以提供浏览器访问的程序; 这个统一的web资源会被放在同一

qq_36188127的博客 2万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JavaWeb入门到实战

基本概念 web应用程序 静态web 动态web Web服务器 web服务器 Tomcat 安装Tomcat Tomcat启动和配置 发布一个web网站 Http 什么是http 两个时代 http请求 请求行 消息头 http响应 响应体 响应状态码 Maven Maven项目架构管理工具 下载安装Maven 配置环境变量 阿里云镜像 本地仓库 Servlet Servlet简介 HelloServlet Servlet

sukisabishi的博客 112

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JSP入门

JSP入门 JSP语法 Jsp模板元素&lt;html&gt; 脚本片段:&lt;%Java代码必须遵循java的语法规则%&gt; 脚本表达式:&lt;%=表达式&gt; S声明:&lt;%!声明%&gt; 注释:html注释&lt;!----&gt;jsp&lt;%----%&gt; JSP工作原理: 1.jsp----------转换成1_jsp.java(httpSer...

yangshen998 108

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JSP工作原理

一、JSP工作原理 JSP在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Ja

ale0512的专栏 9618

JSP工作原理及执行流程

**JSP:**全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP的本质是servlet, 通过response的printWriter返回,response的getOutputStream只能调用一次,返回流就不能返回页面刷新。 #####一、JSP工作原理 1.当一个JSP文件第一次被请求的时候,JSP引擎(本身也...

CoderZS的博客 6226

JSP工作原理简单解析

网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面。容器负责截获对JSP页面的请求。本教程使用内嵌JSP容器的Apache来支持JSP开发。 JSP容器与Web服务器协同合作,为JSP的正常运行提供必要的运行环境和其他服务,并且能够正确识别专属于JSP网页的特殊元素。 JSP处理 以下步骤表明了Web服务器是如何使用JSP来创建网页的: 1.就像其他普通的网页一样,您的浏览...

romantic_jie的博客 6538

Jsp入门<1>Jsp入门基础简介与工作原理详解

一)JSP基础 1、什么是JSP? 2、为什么要使用JSP? 3、JSP与Servlet的关系? 4、如何写一个JSP文件 5、JSP是如何运作的? 6、JSP有哪些隐含对象? 7、JSP指令 8、JSP注释

飞翔的心 1302

JSP引擎的工作原理

本文介绍JSP引擎的工作原理,以及JSP运行环境,JSP生命周期和JSP网络应用服务器框架等。 <br /> <br />JSP运行环境:<br />执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有WebLogic和Tomcat。把这些支持JSP的web服务器配置好后。就可以再客户端通过浏览器来访问JSP页面了。默认端口一般是7001.<br />JSP生命周期:<br />JSP处理请求的方法就是把这些请求都统一看做Servlet。由于这个原因,JSP的很多功能和生命周期,都由Java

gyflyx的专栏 960

JSP的工作原理

 JSP页面工作原理图 当一个JSP文件第一次被请求的时候,JSP引擎(本身也是一个Servlet)首先会把这个JSP文件转换成一个Java源文件。在转换过程中如果发现JSP文件有语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功,JSP引擎用javac把该Java源文件编译成相应的.class文件并将该.class文件加载到内存中。 其次创建一个该Servlet

Richard的专栏 1034

Servlet和JSP工作原理

一、Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器。 Servlet 运行在 Servlet 容器中,并由容器管理从创建到销毁的整个过程。 Servlet 的生命周期 (1) 加载和实例化 Servlet 容器装载和实例化一个 Servlet。创建出该 Servlet 类的一个实例。

西楚小羽的专栏 1185

JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】

什么是JSPJSP全名为Java Server Pages,java服务器页面。JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在!为什么需要JSPJSP是为了简化Servlet的工作出现的替代品,Servlet输出HTML非常困难,JSP就是替代Servlet输出HTML的。简单使用一下JSP 在idea下生成一个JSP,我们来看一下JSP长什么样子 <%@ pag

zhong_fucheng 1244

JavaWeb从入门到精通!第一天(HTTP协议和JSP页面)

HTTP 超文本传输协议,Hypertext transfer protocal,属于网络模型中的应用层的协议,它详细规定了浏览器和Web 服务器之间相互通讯的规则。HTTP 协议是基于 TCP 协议的,要经历三次握手(参考之前的网络基础)来建立通讯。

2301_80002260的博客 1137

JSP技术中HTTP Session 工作原理

无状态的 HTTP 大家都知道,我们目前使用的互联网应用层协议基本上都是基于 HTTP 和 HTTPS 的,它们的本身是无状态的, 只负责请求和响应。 我告诉服务器我需要什么,服务器返回给我相应的资源。 如果没有额外处理的话, 服务器是不知道你是谁,更无法根据你是谁给你展现和你相关的内容了。 HTTP 协议一开始被设计成这样还是有一些历史原因的,当时的互联网多用于学术交流,只用于文章信息的展现...

599
上一篇: Mysql的数据类型和数据类型的应用
下一篇: document.body.scrollTop总是零的原因
binboot
博客等级 码龄19年 0粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值