什么是jsp?
- jsp的全程是java server page,即java的服务器界面
- jsp的主要作用是代替servlet程序回传好HTML页面的数据
- jsp本质是一个servlet程序,第一次访问jsp页面,tomcat会将jsp页面翻译为一个java文件,并对其进行编译生成一个字节码文件。打开源文件会发现:
向上查看会发现,HtpJspBase继承HttpServlet类,证明jsp是一个Servlet程序。
jsp中的常用脚本
- 表达式脚本
格式:<%=你要展现在网页上的内容%>
- 代码脚本
格式:<%写你要写的java代码%>
也可以将代码脚本与表达式脚本进行联合使用。
- 声明式脚本
格式:<%!声明java代码%>
作用:可以给JSP翻译出来的Java类定义属性、方法、静态代码块、内部类等
使用声明式脚本,会先将声明脚本代码的部分放在生成的java代码文件前面,即使你在jsp中是先使用再定义。
jsp中的三种注释
- jsp注释:<%–注释的部分–%>
- html注释:<!–注释的部分–>
- java注释:单行注释:// 多行注释:/* 注释的内容*/
jsp四大域对象
pageContext 页面上下文对象 类型: javax.servlet.jsp.PageContext 作用域: 当前页面有效
request 请求对象 类型: javax.servlet.ServletRequest 作用域: 一次请求有效
session 会话对象 类型: javax.servlet.http.HttpSession 作用域: 一次会话有效
application 应用程序对象 类型: javax.servlet.ServletContext 作用域: 真个web工程范围内
在一个页面中给四个作用域赋上值:
在当前界面访问的结果:
直接访问另一个界面(没有请求转发等操作)来读取数据:
通过请求转发来获取数据:
注意:若四个域对象在使用时范围都可满足要求,则使用的优先顺序是(范围从小到大):
pageContext --> request --> session --> application
我们可以在进行赋值的时候来设置作用域:
定制错误页面
在jsp页面中,我们可能会出现一些错误,异常,这时我们的页面就会出现以下情况:
这是我们可以定制一个错误页面,当当前页面出现异常的时候,让其跳转到错误的页面:
在当前页面我们手动制造一个错误,比我 int i = 1/0;然后再页面前面写上 <%@ page errorPage=“500.jsp” %> 就会跳转到我们错误的页面:
我们也可以在web.xml中对不同的错误页面进行配置:
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
jsp中out输出与response.getWriter输出的区别
jsp的指令
在很多页面中常常有一块内容是一直不变的,我们就可以将这块设计成一个公共的页面,在其他页面包含进去即可。
常见的方式有两种,<%@ include file=“你要包含的页面路径”%> 以及 <jsp:forward page = “你要包含的页面路径”> 。
第一种方式会将页面合在一起:也就是将一个页面的内容输出然后和下一个页面拼接在一块。
第二种拼接页面,本质还是分开的,各自中的变量互不影响。
另外,第二种方式还可以传递参数:
通过jsp:forward携带参数
在jsp中,我们可以通过<jsp: forward page = “”>进行请求转发,同时我们也可在转发的时候携带参数:
<jsp:forward page="param.jsp">
<jsp:param name="username" value="lisi"/>
<jsp:param name="age" value="12"/>
</jsp:forward>
在转发的页面我们也可以得到参数的值:
<%=request.getParameter("username")%>
<%=request.getParameter("age")%>