JSP
全名Java Server Page,中文名java服务器页面。其根本是一个简化的servlet设计。动态网页技术标准。
特点:
本质上还是Servlet;跨平台,一次编写处处运行;组件跨平台;健壮性和安全性。
JSP的访问原理
浏览器发送请求,请求JSP,请求被Tomcat服务器接收,执行。JspServlet将请求的JSP文件转译成为对应的java文件(也是servlet),然后执行转译好的java文件。
Jsp的三种注释
- 前端语言注释:会被转译,也会被发送,但不会被浏览器执行。<!-- -->
- java语言注释:会被转译,但不会被servlet执行。
- Jsp注释:不会被转译。<%-- --%>
JSP的语法和指令
page指令:<%@page 属性名=“属性值” 属性名=“属性值” ... %>
- language:声明jsp要被转译的语言。
- import:声明转译的java文件要导入的包,不同的包使用逗号隔开。
- pageEncoding:设置jsp文件的数据编码格式。
- contentType="text/html;charset=utf-8":设置jsp数据响应给浏览器时,浏览器的解析和编码格式。
- session:设置转译的servlet中是否开启session支持,默认开启。
- errorPage:设置jsp运行错误跳转的页面。
- extends:设置jsp转译的java文件要继承的父类(包名+类名)
- 作用:配置jsp文件的转译相关参数。
Jsp的局部代码块:
- 特点:局部代码块中声明的java代码会被原样转译到jsp对应的servlet类的_JspService方法中。代码块中声明的变量都是局部变量。
- 使用:<% java代码 %>
- 缺点:使用局部代码块在jsp中进行逻辑判断,书写麻烦,阅读困难。
- 开发:servlet进行请求逻辑处理,使用jsp进行页面展示。
Jsp的全局代码块:
- 特点:声明的java代码作为全局代码转译到对应的servlet类中。
- 使用:<%! 全局代码块 %>
- 注意:全局代码块声明的代码,需要使用局部代码块调用。
Jsp的脚本段语句:
- 特点:帮助我们快速的获取变量或者方法的返回值作为数据响应给浏览器。
- 使用:<%=变量名或者方法%>
- 注意:不要在变量名或者方法后使用分号。
- 位置:除jsp语法要求以外的任何位置。
Jsp的静态引入:
<%@include file="要引入的JSP文件的相对路径" %>
- 特点:会将引入的jsp文件和当前jsp文件转译成一个java(servlet)文件使用,在网页中也就显示合并后的显示效果。
- 注意:静态引入的jsp文件不会单独转译成一个java文件,当前文件和静态引入的jsp文件中不能使用java代码块声明同名变量。
Jsp的动态引入:
<jsp:include page="要引入的JSP文件的相对路径"></jsp:include>
- 特点:会将引入的jsp文件单独转译,在当前文件转译好的java文件中调用引入的jsp文件的转译文件。在网页中显示合并后的效果。
- 注意:动态引入允许文件中声明同名变量。
两种引入的优点:降低jsp代码的冗余,便于维护升级。
JSP的转发标签forward:
- 使用:<jsp:forward page="要转发的jsp文件的先对路径"></jsp:forward>
- 特点:一次请求,地址栏信息不变。
- 注意:在转发标签的两个标签中间除了写<jsp:param name="str" value="aaa"/>子标签不会报错,其他任意字符都会报错。其中name属性为附带的数据键名,value为附带的数据内容。(会将数据以?的形式拼接在转发路径的后面)
Jsp的九大内置对现象:
内置对象:jsp文件在转译成其对应的Servlet文件的时候自动生成并声明的对象。我们在jsp页面中直接使用即可。
注意:内置对象在jsp页面中使用,使用局部代码块或者脚本段语句来使用。不能使用在全局代码块中使用。
五个常用对象:
- pageContext:页面上下文对象,封存了其它内置对象。封存了当前jsp的运行信息。
- 注意:每个Jsp文件单独使用一个PageContext对象。
- 作用域:当前页面。
- request:封存当前请求数据的对象。由tomcat服务器创建。
- 作用域:一次请求。
- session:存储用户不同请求的共享数据。
- 作用域:一次会话。
- application:也就是ServletContext对象,一个项目只有一个,存储用户共享数据的对象,以及完成其他操作。
- 作用域:项目内。
- respond:响应对象,用来响应请求处理结果给浏览器对象,设置响应头,重定向。
JSP的路径:
在jsp中资源路径可以使用相对路径完成跳转,但是存在一些问题:
- 资源的文职不可以随意更改。
- 需要使用../进行文件夹的跳出,使用比较麻烦。
使用绝对路径:/虚拟项目名/项目资源路径:eg:
<a href="/jsp/jspPro.jsp">...</a>
<a href="/jsp/a/a.jsp">...</a>
注意:在jsp中资环的第一个"/" 表示的是服务器根目录,相当于localhost:8080
使用jsp中自带的全局路径声明:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+...
%>
<base href="<%=basePath>">
作用:给资源前面添加项目路径:http://127.0.0.1:8080/虚拟项目名/.

9519

被折叠的 条评论
为什么被折叠?



