什么是jsp?
中文名java服务器页面,本质是一个servlet
jsp访问流程
浏览器发送请求,请求jsp时,服务器会先去项目下找有没有*.jsp的servlet,找不到的情况下去tomcat服务器根目录下找,会找到一个jspServlet(jsp引擎),jspServlet把*.jsp转译成一个servlet,进行处理请求并响应
page指令的属性及作用
Language:声明被转译的语言
import:导包(多个包用逗号隔开)
pageEncoding:声明jsp保存的编码格式
contentType:声明响应的编码格式
session:开启session(默认值为true开启session,值false时不开启session)
errorPage:发生异常时要跳转的页面
isErrorpage:开启异常对象的使用
<%@page language="java" import="java.util.*" session="true" pageEncoding="utf-8" %>
<%@ page contentType="text/html; charset=utf-8"errorPage="error.jsp" isErrorPage="true" %>
jsp的局部代码块和全局代码块和脚本段语句
<% int count=1; %>>//局部代码块
<%! int i=6; %>//全局代码块
<%= i %>//脚本段语句
局部代码块声明和全局代码块声明的区别
局部代码块:书写的java代码jsp转译到方法中,书写的变量是局部的,不能书写方法
全局代码块声明声明:jsp转译后,在jsp中书写的变量是全局的,可以书写方法
jsp中的注释及区别
<%-- --%>//jsp本身注释,不会被转译
<html>
<head>
<style type="text/css">
/*CSS注释*/ 会被转译并响应到浏览器
</style>
</head>
<body>
<!--html注释-->会被转译并响应到浏览器
<script type="text/javascript">
//js注释 会被转译并响应到浏览器
</script>
</body>
</html>
<%//java注释 %>//会被转译不会响应到浏览器
静态引入和动态引入的标签
<%@include file="my.jsp"%>//静态引入
<jsp:include page="my.jsp"></jsp:include>//动态态引入
静态引入和动态引入的区别
静态引入:转译后把资源与本身jsp进行合并成一个servlet
动态引入:转译后资源jsp单独生成一个servlet,当前jsp生成的servlet中调用资源生成的servlet
jsp的forward标签
<jsp:forward page="login.jsp"></jsp:forward>//请求转发(开始标签和结束标签之间不能有空格,否则报下面的500错误)
jsp的九大内置
PageContext:上下文对象,封存了另外8大内置对象
Request:封存了用户请求相关的数据
Respone:封存了服务器的响应数据
Session:解决了同一用户之间不同请求的数据共享问题
Application:servletContext对象,解决了不同用户之间的数据共享问题
Config:servletConfig对象 完成资源的初始化
Out:把数据响应到客户端,使用了缓存技术,比response效率块
Exception:异常对象,封存了异常信息
Page:转译后文件的对象
Servlet中请求转发和重定向路径中第一个斜杠的含义
请求转发第一个斜杠:表示项目根目录
重定向路径第一个斜杠:表示服务器根目录
jsp中的路径的第一个斜杠的含义
jsp中的路径的第一个斜杠表示服务器根目录
jsp中的basePath设置的作用
在myeclipse中设置basePath时会默认给每个资源路径加上项目根路径(在写相对路径时其实写的是绝对路径,注意不能在设置basePath不能写绝对路径,否则报404错误)
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> //basePath值为项目根路径
<base href="<%=basePath%>">//给每个资源路径加上项目根路径