概念:
java Server Page:java服务器端页面
*可以理解为一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码
作用:简化书写java代码,jsp本质上就是一个Servlet
原理:
1.服务器解析请求消息,找是否有index.jsp资源
2.如果找到了会将jsp转化为Servlet的java文件
3.编译java文件,生成class字节码文件
4.由字节码文件提供访问
jsp脚本:JSP定义java代码的方式
1.<% 代码 %>:定义的java代码,在service方法中,service方法可以定义什么,该脚本中就可以写什么
2.<%!代码 %>: 定义类成员,可以定义成员变量和方法
3.<%= 代码 %>:定义的java代码会输出到页面,输出语句中可以定义什么,该脚本中就可以定义什么
jsp内置对象:不用定义可以直接使用的对象
四个域对象:
1.pageContext:
类型:PageContext
作用:当前页面共享数据,获取其他内置对象
2.request:请求对象
类型:HttpServletRequest
作用:一次请求访问的多个资源间共享数据(转发)
3.session
类型:HttpSession
作用:一次会话的多个请求共享数据
4.application
类型:ServletContext
作用:所有用户间共享数据。服务器开启创建,服务器销毁销毁
5.response:
类型:HttpServletResponse
作用:响应对象,响应请求
6.out:
类型:JspWriter
作用:字符输出流对象,可以将数据输出到页面,和response.getWriter()类似
out和getWriter()的区别
out定义在哪个位置就会输出在哪个位置,getWriter会优先执行,因为浏览器会先找response响应缓冲区,在找out缓冲区
7.page
类型:Object
作用:当前页面(servlet)对象(this)
8.config
类型:ServletConfig
作用:servlet配置对象
9.exception
类型:Throwable
作用:异常对象
jsp指令
作用:用于配置jsp页面,导入资源文件
格式:<%@指令名称 属性名1=属性值1 属性名2=属性值2 。。。。 %>
分类:
1.page :配置jsp页面
contenType,等同于response.setContenType()
1.设置响应体mime类型及字符集
2.设置jsp页面的编码,(IDE开发工具才能生效,记事本等低级工具需要设置pageEncoding属性设置当前页面的字符集)
import:导包
errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
isErrorPage:标识当前的页面是否是错误页面
*值为true,是错误页面,可以使用exception内置对象,
*值为false,不是错误页面,不允许使用exceotion
2.include:页面包含的,导入页面的资源文件
3.taglib:导入资源
注释
html注释 <!-- -->,只能注释html代码片段
jsp注释 <%-- --%> 可以注释jsp页面中所有的内容
MVC开发模式:
M:model模型
作用:业务逻辑操作,如查询数据库、封装对象等
V:view视图
作用:视图展示,展示数据
C:controller控制器
作用:视图和模型的中间层,获取客户端输入,调用模型,将数据交给视图展示
<%--
Created by IntelliJ IDEA.
User: xiaoqiang
Date: 2021/8/17
Time: 16:19
To change this template use File | Settings | File Templates.
--%>
<%-- page :配置jsp页面
contenType,等同于response.setContenType()
1.设置响应体mime类型及字符集
2.设置jsp页面的编码,(IDE开发工具才能生效,记事本等低级工具需要设置pageEncoding属性设置当前页面的字符集)--%>
<%@ page contentType="text/html;charset=UTF-8" errorPage="error.jsp" language="java" %>
<%-- import导包--%>
<%@ page import="java.util.ArrayList" %>
<%-- 引入其他页面,导入页面的资源文件--%>
<%@ include file="include.jsp"%>
<%--taglib:导入资源 例如导入c标签--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>jsp示例</title>
</head>
<body>
<p>你好啊!</p>
<%!
/* 类成员 */
String str="我是一个jsp页面!!!";
public String getStr(){
return str;
}
ArrayList<String> list = new ArrayList<String>();
%>
<%
/*service 方法*/
String str = this.getStr();
System.out.println(str);
%>
<%=
/*service 页面输出*/
str
%>
<br />
<%= "我是jsp页面哈" %>
<% pageContext.setAttribute("","");%>
</body>
</html>
mvc优缺点:
优:降低耦合,利于分工合作,方便维护,重用性高
缺:项目架构变得相对复杂