1.JSP基础
2.EL表达式
一、JSP基础
1.简介
JSP(java server pages) Java服务器页面
静态网页:可以直接被浏览器渲染。但是不能做数据交互。
动态网页:不可以被浏览器直接渲染,需要第三方辅助,可以与Java进行数据交互操作。
JSP = html+java+jsp本身的标签
JSP是动态资源。但是在编写上和访问上更像静态资源。存储时也和静态资源放在一起。
第一个JSP页面
1、更改整体编码JSP编码格式
2、创建第一个JSP
3、JSP页面组成
4、运行
2.JSP运行原理
JSP是动态资源还是静态资源?
是动态资源,放的位置,编写和访问上很像静态资源。
注:JSP本质上就是Servlet
jsp如何运行?
一个jsp在第一次访问时,会被服务器中的jsp引擎(服务器中编译jsp的软件模块)
编译成一个Servlet jsp名字_jsp.java jsp名字_jsp.class并且放在 Tomcat的work目录下。
JSP和Servlet表现形式上不同
a.编写jsp文件就是编写文本文件一样。编写servlet编写的是java程序。
b.编写jsp以后,直接将jsp拷贝到容器的部署目录就可以了。
c.编写后的servlet要通过web.xml文件加以配置。jsp直接访问就行了。
d.jsp和静态资源放在一起就可以了。-----jsp在使用上更像静态资源。
打开first_jsp.java
发现,原来JSP编译过后其实就是一个Servlet。 JSP的本质就是一个Servlet。
Servlet:继承HttpServelt 作为控制层框架<连接前后台>,作用是接收页面的数据、调用业务方法、返回指定页面。
JSP:继承HttpJspBase 这个类是一个HttpServlet的子类。但是属于一个简化版的Servlet。作用是为了能够让Jsp页面实现动态交互。 作为展示层<展示信息>存在
3.JSP脚本标签
代码片段(内联代码):<% Java代码 %> (显示在service方法中)
脚本表达式:<%= 值 %> 意思就是将java的内容输出到页面上 等同 PrintWriter
JSP的声明:<%!java声明 %> 解释:对应Java就是全局变量。
JSP注释:<%-- 注释代码 --%>
在JSP中HTML的注释和JSP的注释都可以使用。区别是:
1、HTML注解最终会原样输出到HTML代码上。不丢失。
2、JSP在Tomcat转化Java类的时候直接给去掉,为了能够让字节码文件更简洁运行更速度。最终是不可见只有原页面中能见到。
4.JSP指令标签
(1)page指令
language jsp中可以嵌入的语言 目前为止只能填java
import 用来导包
pageEncoding 设置当前jsp页面的编码方式
contentType 设置浏览器查看这个页面时使用编码方式
session 默认是true 当前jsp中能否使用session(如果为true,则在这个jsp中就已经可以使用session对象)
isELIgnored 当前页面能否使用EL表达式
buffer 缓存区大小 默认是8kb
autoFlush 是否自动刷新
errorPage 指定错误页面
isErrorPage 设置为错误页面 (设置为错误页面,就有处理异常的功能)
以上两个属性,一般不用,一般错误处理是在web.xml中统一进行配置
web.xml中配置报错页面
1、import
2、errorPage
访问first.jsp,出现异常,显示errorPage.jsp页面的内容。
3、include
访问first.jsp,second.jsp的内容也显示在first.jsp页面上
4、引用标签库(本文下面用到)
<%@ taglib prefix="" uri="" %>
5.JSP九个内置对象
request请求对象 response响应对象 是service方法参数
page页面对象 Object类型,指向this
pageContext页面对象 jsp的上下文对象,
作用一:作为作用域,取值范围是当前页面
作用二:可以用来获取其他八个内置对象(一般在通用编程时才会使用)
application应用对象服务器对象 就是ServletContext
session会话对象 会话
config配置信息对象 就是ServletConfig
out输出对象 是PrintWriter的子类
exception异常对象 Throwable
1、request
package com.xj.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DemoServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String companyName = "青青草原";
//把name值存在request作用域中
request.setAttribute("companyName", companyName);
request.getRequestDispatcher("com