jsp的基本使用步骤以及说明

本文介绍了JSP的基本使用步骤,包括它的优势、页面元素规范、九大内置对象及常见HTTP状态码问题。详细阐述了JSP文件的转换过程,从被编辑为Java文件,到编译为Servlet类,再到通过反射机制执行。同时,讨论了解决中文乱码问题的两种方法,并提及了web.xml文件的作用。此外,还涵盖了JSP注释的类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jsp的基本使用步骤

1.介绍

  • 1.1.JSP是sun公司提供一个规范
  • 1.2.JSP用于封装响应对象简化将Servlet处理结果写入到响应体降低开发难度
  • 1.3 在JSP页面中,将小脚本(script),表达式(expression),声明(declaration)统称为JSP脚本元素,用于在JSP页面中嵌入JAVA代码,实现页面的动态处理

2.优势

  • 2.1 开发人员你只需要考虑哪些内容需要写入到响应体,不需要考虑写入到响应包中过程

  • 2.2 jsp文件"运行时"自动将文件内部所有与java命令无关的内容自动写入到响应体

3.jsp文件中java命令书写规范

3.1 执行标签
	格式如下:
					局部定义:<%内容填写java代码(如:定义一个变量String name = "张三")
					但不能定义方法,只能定义局部变量%>
					全局定义:<%!内容可以定义的是全局变量,比如就像在class里面定义的属性一样,也可以定义方法%>
					
			3.2 执行标签
					1)输出:<%=里面写入的是你要输出的内容(如:你要输出上面你定义的name,只需要添加到里面即可)name%>		
					2)作用:在JSP文件运行时,通知JSP将指定变量内容或者表达式运算结果写入到响应体
			
3.2jsp页面各个属性的用途,如图所示:

在这里插入图片描述

4.JSP 九大内置对象

	4.1 分别是:
	
				HttpServletResponse response;(响应)
				HttpServletRequest request;(请求)
			    final java.lang.Object page = this;(页面)
				ServletContext application ;(全局作用域)
				javax.servlet.jsp.JspWriter out = null;(输出s)
				 final javax.servlet.ServletConfig config;(配置)
			    javax.servlet.http.HttpSession session = null;(会话作用域)
			    final javax.servlet.jsp.PageContext pageContext; ( 页面上下文)
			    exception (异常)

5.JSP常见Http状态码问题

5.1  404状态码
	 Http服务器通知浏览器本次索要的资源文件不存在
	 原因:
                      1)人为原因:
                                            网站名不对
                                            如果网站名正确,可能资源文件名称
                                            tomcat没有在网站定位默认欢迎资源文件
                                            设置请求地址没有按照uri格式(/网站名/资源文件名)设置
                      2)IEDA没有将最新网站内容交给tomcat

5.2 500:Http服务器通知浏览器本次索要的资源文件已经被找到了并且
                 也可以接收浏览器的请求方式,但是由于资源文件在处理过程
                 出现了异常因此无法提供服务

                 异常:并不是命令写错了,命令使用数据不满足条件

                 ***一个异常至少遇到三次以上才有可能进行解决
 5.3 405:  Http服务器通知浏览器本次索要的资源文件已经被找到了,但是
                  这个资源文件对于浏览器请求方式无法接收(请求方式错误的原因)
                                get
                  浏览器------------》servlet.doGet()
                                post
                  浏览器-----------》 servlet.doPost()

6.JSP欢迎页面设置

	6.1
	在web.xml文件里面修改默认访问地址,在正常情况下,默认访问地址index.html。
	
	就跟if()else{}的结果差不多
	
	他首先判断第一个文件是否存在,不存在找第二个index.htm然后再找第三个index.jsp
	
	因为猜不到大概模样我们看看结构:
								<welcome-file-list>
							        <welcome-file>index.html</welcome-file>
							        <welcome-file>index.htm</welcome-file>
							        <welcome-file>index.jsp</welcome-file>
						    	</welcome-file-list>

7.中文乱码问题

**7.1post请求:**
		在调用jsp跳转至后,也就是获取请求参数之前设置,调用request.setCharacterEncoding("utf-8");
		这样一来就不会出现中文乱码问题
		
**7.2 get请求:**

	Tomcat队请求默认采用的是IOS-8859-1字符集进行解码
	治标不治本的方法一:
		将乱码的字符串打散为byte数组,再通过new String方法,x使用指定的UTF-8字符集把byte数组构造为一个全新的String对象
		方法二:修改tomcat配置文件server.xml,添加URlEncoding="utf-8";

方法一图片:
在这里插入图片描述
方法二图片:
在这里插入图片描述

8.web.xml文件简单介绍

最开始的时候是xml的格式,也就是在以前还没有html格式的文件之前,都是用xml文件写的页面,当时因为那个作者的原因 他更新了1.0版本后,过来一段时发布了新版本,结果很多人都认为这个新版本不行,不好,这个作者呢,脾气不好,看到这么多人否认他,他直接删除了新版本的发布,随之后来才有的HTML这样的超文本编辑语言;(自我理解!!如有不到位,莫喷!!欢迎评论留言谢谢~!)
也就是说

xml是父亲

html是子

html和xml语法几乎是完全一致的

后来被sun公司捡了起来,作为web的配置文件

xml允许你自己声明一个标签(浏览器会蒙圈不知道他是谁)但不建议自己定义声明一个标签

9.注释

9.1
1)HTML注释方法:
    <!------给开发者开的内容------>

    在客户端上会被在源码上看到

2) jsp 注释标记:

    <%–注释内容–%>

    这种注释写给应用服务器看的   客户端无法看到


    (3)在jsp 脚本中使用注释分为单行注释和多行注释  和Java一样

    <%
    
    //单行注释
    
    /**
    多行注释
    */
    
    %>

10.实例如图所示:

一个基本的jsp页面大概就是这样(例子而已);
在这里插入图片描述

11.jsp运行原理[面试必考题]

11.1  jsp文件不是静态资源文件也不是动态资源文件

11.2 jsp文件不能被编译不能被调用执行

11.3 运行原理:
	1)tomcat接收到调用jsp文件请求时,tomcat	将被访问jsp【编辑】为java文件
	2)tomcat调用JVM将java文件【编译】为class文件
	3)这个class文件是一个Servlet接口实现类
	4)tomcat通过反射机制生成这个class文件的实例对象
	5)tomcat通过实例对象调用_jspServlet方法,这个方法在运行时负责通过输出流将jsp文件内容写入到响应体






		·
JS JSP ASP .NET J2AM API接口和返回的版本 目前所有版本的JS JSP ASP .NET J2AM 都是提供源代码的,对于一些脚本语言来说,直接解压缩之后就可以使用了,不需要什么安装步骤。另外一些需要编译的语言,则提供了编译用的 shell 文件(Linux/Unix 下使用)和 bat 文件(Windows 下使用),或者直接提供编译好的二进制库文件。 不过为了让读者能够更清楚如何安装,我们还是对每种语言的安装都做详细的讲解,你可以在安装列表里找到你感兴趣的语言的安装方法。 示例 如果你已经把 JS JSP ASP .NET J2AM 安装好了,那么接下来就让我们开始第一个小程序吧。按照惯例,第一个演示程序几乎总是 HelloWorld,我们也不想打破这个惯例,不过对于 PHPRPC 来说,有服务器端就要有客户端,否则我们就没有什么好演示的啦,所以我们的第一个演示程序实际上是两个,一个是服务器端,另一个是客户端。我们都先用 PHP 语言来好了。 服务器端 view plaincopy to clipboardprint? <?php include ("php/phprpc_server.php"); function HelloWorld() { return 'Hello World!'; } $server = new PHPRPC_Server(); $server->add('HelloWorld'); $server->start(); ?> 客户端 view plaincopy to clipboardprint? <?php include ("php/phprpc_client.php"); $client = new PHPRPC_Client('http://127.0.0.1/server.php'); echo $client->HelloWorld(); ?> 对于服务器端程序,我们应该将它命名为 server.php(这是因为客户端调用时用的是这个名字,而不是 PHPRPC 的什么规定),然后把它放在本地 Web 服务器的根目录下,并保证服务器可以正常运行 PHP 程序,之后在浏览器或命令行下运行客户端程序,你就可以看到结果了。 这两个程序几乎简单到无需解释的地步,所以如果你已经明白它们的意思,那么就可以直接跳过下面的解释,继续看后面的例子。 服务器端第 1 句是将 它的服务器端程序包含到你的程序里,之后的 2 - 4 句是定义一个远程调用的函数,你会发现它与本地函数没有任何区别。第 5 句是创建服务器端对象,第 6 句是添加要发布的方法,这里添加的就是刚刚定义的 HelloWorld 函数,在 PHP 中,添加的发布方法是函数名的字符串表示,在其它语言中可能略有不同。第 7 句是启动服务。 客户端就更简单了,第 1 句是将 它的客户端程序包含到你的程序里。第 2 句是创建客户端对象,其中的参数就是服务器端的地址。第 3 句是对远程方法(函数)的调用,之后通过 echo 将它显示出来。如果顺利的话,执行后你就会看到输出的 Hello World!。 上面的例子是发布的是函数,下面我们来看一下类中的静态方法如何发布: view plaincopy to clipboardprint? <?php include ("php/phprpc_server.php"); class Hello { static function HelloWorld() { return 'Hello World!'; } } $server = new PHPRPC_Server(); $server->add('HelloWorld', 'Hello'); $server->start(); ?> 这个服务器端只要它的名字与发布的地址与上面那个发布函数的例子一样的话,上面的那个客户端就可以得到同样的结果,也就是说,在客户端看来是没有任何区别的。 它并不是只可以在 PHP 中使用,它同样支持其它语言的服务器和客户端,而且还可以无差别的相互调用。 现在我们来看一下如何在 Java 中调用这个 PHP 的服务器方法: view plaincopy to clipboardprint? import org.phprpc.*; interface IHello { public String helloWorld(); } public class HelloWorld { public static void main ( String [] args ) { PHPRPC_Client client = new PHPRPC_Client("http://127.0.0.1/server.php"); IHello clientProxy = (IHello)client.useService(IHello.class); System.out.println(clientProxy.helloWorld()); } } 当我们把这个例子编译之后,在命令行中输入以下命令就可以看到执行结果了: java -classpath .;phprpc_client.jar HelloWorld 这个 Java 的客户端看上去比 PHP 的要稍微复杂一些,不过仍然很好理解。在 Java 客户端中,我们使用了接口来描述远程方法,之后我们通过 useService 方法返回一个远程代理对象,该对象实现了我们定义的接口,之后我们就可以直接调用远程方法 helloWorld 了。如果你比较细心的话,你还会发现我们在 PHP 中定义的方法和在 Java 中定义的接口的名字的大小有点不同,但是仍然可以正常调用。是的,PHPRPC 发布的方法是不区分大小的。所以不论你所使用的语言是否区分大小,都可以按照自己(或语言)的习惯来定义方法名。 在本章的最后,我们再来看一下在 JavaScript 如何调用它的服务。顺便再强调一下,服务器端不止是可以用 PHP 来编,你同样可以使用其它语言(比如 Java,.NET,Ruby,Python 等),这里我们只是以 PHP 为例而已。在这个例子中你还会看到如何使用加密传输。 view plaincopy to clipboardprint? <html> <head> <title>HelloWorld</title> [removed][removed] [removed] var client = new PHPRPC_Client('http://127.0.0.1/server.php', ['HelloWorld']); client.setEncryptMode(2); client.HelloWorld(function (result) { alert(result); }); [removed] </head> <body> </body> </html> 这个 JavaScript 是在网页中运行的,这里建议大家要把 head 和 body 标签都全,即使它们对你来说看上去没有什么用处,但是在有些浏览器中,如果这些标签没有全,或者的不正确,程序就不能正确运行。 在这个例子中,我们会发现在创建 PHPRPC_Client 对象时,除了要服务器地址以外,还要将远程方法的名字作为参数,因为远程方法可能不止一个,所以这个参数是数组类型的。 client.setEncryptMode(2); 这句是设置加密传输,参数 2 表示双向加密,就是参数和结果都加密(只不过这个 HelloWorld 比较特殊,它没有参数)。 接下来就是调用远程方法 HelloWorld 了,我们会发现它跟 PHP 和 Java 客户端的调用不太一样。是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 alert(result); 我们就可以在浏览器中看到最后弹出的 Hello World! 提示框了。 通过上面的例子,我们已经看到在 PHP、JavaJavaScript 这三种语言中使用 PHPRPC 都很简单,但因为语言的不同,在法和用法上又有一些差别。不过你不用担心其它的语言跟它们也会有很大的差别,因为在接下来的章节中你很快就会发现其它语言跟这上面三种语言实现的法和用法上的相似或相同之处了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值