jsp

本文详细介绍了JSP(Java Server Pages)的基本概念、执行原理、存放路径和字符编码设置。讨论了jsp指令,包括page、include和taglib指令的使用,并解析了jsp动作标签和内置对象。在实际项目开发中,了解这些基础知识对于高效开发至关重要。
摘要由CSDN通过智能技术生成

什么是jsp

jsp是服务器响应页面
jsp是嵌入java代码的html

jsp的本质就是servlet

jsp执行原理及存放路径

(1)jsp执行原理
html的执行原理:
浏览器发出请求,服务器找到html资源,直接将找到的html资源响应回浏览器,浏览器直接解析html就可以了.
jsp的执行原理:
浏览器发出请求,服务器找到jsp资源,将jsp翻译成为java临时文件,java文件编译成为class文件,最终执行class文件_jspService方法中的内容.jsp中所有的内容都是以_jspService方法中以响应流的形式来呈现的.注意:只有当访问到该jsp文件时才会生成.java和.class,启动服务器不会生成,如果没有修改jsp文件,则不会生成新的.java和.class,会用原有的

(2)jsp临时文件存放路径
work
(3)jsp的运行流程图示
在这里插入图片描述

jsp字符编码设置及环境的搭建

设置响应流的字符编码
在这里插入图片描述
jsp页面本身的编码
在这里插入图片描述
服务器通知浏览器以什么样的字符编码打开响应
在这里插入图片描述
将来的实际项目开发,以上字符编码都要改为utf-8
我们需要对jsp的开发模板进行设置
window->属性
在这里插入图片描述

jsp临时文件生成案例

(1)html代码错误的情况
可以生成java和class文件,将错就错
(2)java代码编译时错误的情况
可以生成java文件,不能编译成class文件
(3)java代码运行时错误的情况
可以生成java和class文件,运行时报500异常
(4)jsp出现500错误应该去哪里调试
改jsp文件,java临时文件可以当做调试的源代码来进行参考

jsp中base标签的使用

加入basePath变量的绝对路径示例

<%
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + 	request.getServerPort() + request.getContextPath() + "/";
%>

basePath变量结合base标签使用示例
必须在head下第一行引入

<base href="<%=basePath%>">

加入了base标签后,页面上所有的相对路径全部失效,对绝对路径不会有影响
总结:
在我们的实际项目开发中,jsp页面动态的取得项目名的方式有两种
一种就是basePath变量结合base标签的使用方式
一种是使用el表达式的方式

basePath变量结合base标签的使用方式
这种方式的使用,我们总结起来就是,所有的页面中路径的使用及引用,都会受到base标签的影响.
基础路径就变成了basePath变量的路径,在写法上,虽然basePath变量省略掉了,其实只是省略掉了(basePath作为基础路径始终存在).

注意:对于市面上的一些个非主流浏览器或者是某些版本的Eclipse中自带的浏览器,base标签是不支持的.basePath不能够省略掉.

对于路径的使用,最终变成了,所有的路径,都从WebContent往下面顺,前面不加/
Eclipse集成base开发模板
在这里插入图片描述

小脚本scriptlet

<% %>的使用
生成在_jspService方法的里面,此脚本中创建的变量为_jspService方法中的局部变量.<%! %>的使用
生成在_jspService方法的外面,此脚本中创建的变量为java临时文件的成员变量.
该脚本在实际项目开发中用不到,因为jsp就是servlet,没有需求会使用到成员变量.
因为一个是成员变量,一个是局部变量,所以在上述两个脚本中变量名可以相同
<%-- --%>的使用
注释,该脚本可以注释java脚本.
该注释所注释掉的信息,通过浏览器查看源代码的方式,是看不到的,该脚本是jsp中专业级别的注释.
<%= %>的使用
在临时文件中翻译成:out.print();
拼接原则,先写java脚本,遇到前端响应,则拆分java脚本

jsp的指令directive

jsp指令概述及语法

(1)概述
声明jsp页面的所需属性和动作
(2)语法
格式:<%@指令名称 属性=“值” 属性=“值”%>

jsp指令的分类

(1)page指令:主要声明jsp页面的一些属性
(2)include指令:静态包含.
(3)taglib指令:导入标签库
(4)使用指令的注意事项
一个页面中可以出现多个指令
指令可以放在任意位置,一般都放在jsp页面最上面

page指令

page指令常用属性
contentType:设置响应流的编码,及通知浏览器用什么编码打开
pageEncoding:设置页面的编码
import:导入所需要的包

page指令非常用属性
language:当前jsp页面里面可以嵌套的语言,(只要是jsp,只可以嵌套java)
session:设置jsp页面是否可以使用session内置对象,session的默认值为true,表示的是,在默认的情况下,jsp执行的时候,已经做好了reqest.getSession(),可以直接拿过来用,如果设为false,则需要自己去reqest.getSession(),
isELIgnored:是否忽略el表达式,默认为false,不忽略
errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
isErrorPage:当前jsp页面是否是一个错误处理页面,默认值为false表示不是一个错误处理页面,是一个正常使用的页面,若值为true,表示是一个错误处理的页面,可以使用jsp页面的一个内置对象 exception来打印错误信息,exception.getMessage

include指令

包含作用,可以使一个jsp包含另一个jsp
包含文件和被包含文件,最终生成一个以包含文件名为名字的java临时文件,包含文件和被包含文件中所有的内容被一起放在了一个jspServiece方法中,所以,包含文件和被包含文件的变量不能重名.如果重名,就相当于发生了编译错误,只会生成.java文件不会生成.class文件

taglib指令:(JSTL中讲解)

用来导入标签库
格式:<%@taglib prefix=“前缀名” uri=“名称空间” %>

jsp动作标签

(1)jsp:forward:转发标签
和request的转发一样,维持原路径不变
(2)jsp:include:包含标签
以动作标签形式的包含,也叫做动态包含.
包含文件和被包含文件,分别独立的生成java临时文件.不用担心变量重名的问题.执行到包含标签时,去执行被包含的文件,执行完被包含文件后,接着执行包含文件

jsp的九大内置对象(实际项目开发不用)

(1)jsp的九大内置对象

内置对象类型
outJspWriter
requestHttpServletRequest
responseHttpServletResponse
sessionHttpSession
exceptionThrowable
page当前Servlet(this)
configServletConfig
applicationServletContext
pageContextPageContext

page:压根就没有方法
(2)jsp中的域对象
pageContext 一个页面
request 一次请求
session 一次会话
application 整个项目
(3)使用pageContext当做其他的域对象使用
scope取值:
APPLICATION_SCOPE
SESSION_SCOPE
REQUEST_SCOPE
PAGE_SCOPE
(4)使用pageContext获取其他内置对象
get…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值