1. 为什么需要jsp?
Servlet对于逻辑处理是非常方便的,但是对于页面的展现是非常麻烦的。JSP的诞生是为了解决Servlet页面展现麻烦的问题的。
2. JSP的特点:
Jsp页面展现非常方便,但是业务逻辑处理非常麻烦
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170312145514170-378574311.png)
总结:
一般我们需要将两门技术结合使用,Servlet做业务处理,jsp做页面的展现
jsp具体内容:
*jsp原理:(jsp就是Servlet)
在我们访问jsp文件的时候,并没有直接去执行JSP文件,而是被服务器所拦截执行了jspServlet的类。此类会将jsp文件
转译成对应的Servlet文件并执行。所以jsp本质还是Servlet。
jsp的使用:
1、常用指令集:
page
language 声明jsp文件支持的语言
import 转译的时候导入的包
pageEncoding -->设置转译及客户端展现数据的编码格式
session -->true代表使用session对象(默认) false不使用session对象
errorPage -->jsp运行错误会自动跳转到指定的页面
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170312145514654-840698384.png)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170312145515029-525034472.png)
include:
静态引入:
转译成一个Servlet类(不能出现同名的变量),耦合性高
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170312145515779-1026839734.png)
动态引入:
转译成两个Servlet类(可以出现同名的变量),耦合性低
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170312145516436-537991790.png)
forward:
请求转发(自带return):
<jsp:forward page="要转发的文件路径">
<jsp:param value="值" name="键"/>
</jsp:forward>
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170312145516998-1764869495.png)
2、java代码段声明
<%java代码%>---会被转译到_jspService方法中,局部代码
3、全局代码段声明
<%!声明方法%>----会被转译成全局代码
4、表达式语句(重要)
<%=变量名/方法 %>---后面不能加分号
注意:一定不要加分号,等价于out.write(),会将里面的值响应给客户端
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170312145517404-1206303759.png)
5、九大内置对象:
四个作用域:
pageContext 页面上下文对象,此对象封装了其他对象的获取方式,当前页(了解)
request 其实就是请求对象,使用方式和Servlet一致
session 其实就是session对象
application 其实就是ServletContext对象
两个输出:
out 输出对象
response 输出对象,比resp对象多了缓冲区,效率提高
三个打酱油:
page 代表被页面对象
config ServletConfig
exception 异常对象,摒弃了
exception 异常对象,摒弃了
6、注释
HTML注释:
会被转译,还会被发送到客户端
css注释:
会被转译,还会被发送
js注释:
会被转译,还会被发送
java注释
会被转译
jsp注释:
%-- 注释内容 --% 直接不转译