6. JSP详解
1. 什么是JSP
全称为:Java Server Pages
Java服务器端页面,也和Serlvet一样,用于动态Web技术!
- JSP中的内容就是html,但是能够嵌套java语言
- HTML只给用户提供静态数据
2. JSP原理
- 服务器内部工作
tomcat中有一个work目录
IDEA中使用Tomcat的会在IDEA的tomcat中生产一个work目录
浏览器向服务器发送请求,不管访问什么资源,都是在访问Servlet
JSP最后也会被转化为一个Java类
JSP本质上就是一个Servlet
// 初始化
public void _jspInit(){
}
// 销毁
public void _jspDestroy(){
}
// JSPService
public void _jspService(.HttpServletRequest request,HttpServletResponse response){
}
- 判断请求
- 内置一些对象
3. JSP基础语法
JSP拥有一些扩充的语法
JSP表达式
<%--JSP表达式
作用:用来将程序的输出,输出到客户端
<%- 变量或者表达式%>
--%>
<%= new java.util.Date()%>
** JSP脚本片段**
<%--jsp脚本片段--%>
<%
int sum = 0;
for (int i = 1; i <=100 ;i++){
sum+=i;
}
out.println("<h1>sum="+sumt"</h1x");
%>
4. JSP声明
<%!
static {
system.out.println("Loading Servlet!");
}
private int globalvar = 0;
public void kuang){
system.out.printlnC"进入了方法!");
}
%>
JSP声明:会被编译到SP生成Java的类中!其他的,就会被生成到_jspService方法中!
在SP,嵌入Java代码即可!
JSP的注释,不会在客户端显示,HTML会显示
5.JSP指令
%@page args.... %>
‹%@include file=""%›
<%--@include会将两个页面合二次一--%>
‹%@include file="common/header. jsp"%>
<h1>网页主题</h1>
‹%@include file="common/footer. jsp"%>
<hr>
<%--jSP标签
jsp:include: 拼接页面,本质还是三个
--%>
‹jsp: include page="/common/header. jsp"/>
<h1>网页主体</h1>
‹jsp: include page="/common/footer.jsp"/>
6. 九大内置对象
page:page对象代表当前JSP页面,是当前JSP编译后的Servlet类的对象。相当于this。
config:标识Servlet配置,类型:ServletConfig,api跟Servlet中的ServletConfig对象是一样的,能获取该servlet的一些配置信息,能够获取ServletContex
application:标识web应用上下文,类型:ServletContext,详情就看Servlet中的ServletContext的使用
request:请求对象, 类型:httpServletRequest
response:响应对象 类型:httpServletResponse
session:表示一次会话,在服务器端记录用户状信息的技术
out:输出响应体 类型:JspWriter
exception 表示发生异常对象,类型 Throwable,在上面我们介绍page指令中的一个errorPage属性时就有说到他
pageContext:表示 jsp页面上下文(jsp管理者) 类型:PageContext
标记了加粗的对象就是JSP独有的,其他的都是Servlet中的老东西。
<%--内置对象--%>
<%
pagecontext.setAttribute(s: "name1", o: "ha");//保存的数据只在一个页面中有效
request.setAttribute("name2", "shi"); //保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","fei"); //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute(“name4","秦疆4号");//保存的数据只服务器中有效,从打开服务器到关闭服务器
%>
<%--脚本片段中的代码,会被原封不动生成到.JsP.java
要求:这里面的代码:必须保证Java语法的正确性
--%>
<%
//MpageContext取出,我们通过寻找的方式来
//从底层到高层(作用城):
String name1 = (String) pageContext. findAttribute ("name1");
String name2 = (String) pageContext. findAttribute ("name2");
String name3 = (String) pageContext. findAttribute ("name3");
String name4 = (String) pageContext. findAttribute("name4");
String name5 =(String) pagecontext.findAttribute( "name5");//不存在
%>
<%--使用EL表达式输出 $f}--%>
<h1>取出的值为:</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3 > <%=name5%> </h3>
</body>
</html>
7.JSP的四大作用域:page、request、session、application
这四大作用域,其实就是其九大内置对象中的四个,为什么说他们也是JSP的四大作用域呢?因为这四个对象都能存储数据,比如request.setAttribute()注意和request.setParameter()区分开来,一个是存储在域中的、一个是请求参数,session.setAttribute()、application其实就是SerlvetContext,自然也有setAttribute()方法。而page作用域的操作就需要依靠pageContext对象来进行了。在上面我们也有提到JSP的四大作用域,
page作用域:代表变量只能在当前页面上生效
request:代表变量能在一次请求中生效,一次请求可能包含一个页面,也可能包含多个页面,比如页面A请求转发到页面B
session:代表变量能在一次会话中生效,基本上就是能在web项目下都有效,session的使用也跟cookie有很大的关系。一般来说,只要浏览器不关闭,cookie就会一直生效,cookie生效,session的使用就不会受到影响。
application:代表变量能一个应用下(多个会话),在服务器下的多个项目之间都能够使用。比如baidu、wenku等共享帐号。
8.JSP标签、JSTL标签、EL表达式
<!-- JSTL表达式的依赖 -->
<dependency>
<groupId>javax.servlet. jsp.jstl</groupId>
‹artifactId>jstl-api</artifactId>
«version>1.2</version>
</ dependency>
<!-- standard标签库 -->
‹dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
‹version>1. 1.2</version>
</dependency>
EL表达式:${}
*** 获取数据**
*** 执行运算**
*** 获取Web开发的常用对象**
JSP标签#
jsptag
<html>
<head>
<title>Title</title>
</head>
<body>
<%-- jsp:include--%>
<jsp:forward page="/jsptag2.jsp">
<jsp:param name="name" value="fei"/>
<jsp:param name="age" value="23"/>
</jsp:forward>
</body>
</html>
jsptag2
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>jsp-tag2</h1>
<%--取出参数--%>
<%=request.getParameter("name")%>
<%=request.getParameter("age")%>
</body>
</html>
JSTL标签库#
JSTL标签库的使用就是为了弥补HTML标签的不足;它自定义许多标签,可以供我们使用,标签的功能和Java代码一样!
核心标签(掌握部分)
核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
格式化标签
SQL标签
XML标签
9.JavaBean
实体类
JavaBean有特定的写法:
* 必须要有一个无参构造
* 属性必须私有化
* 必须有对应的get/set方法
一般涌来和数据库的字段做映射 ORM
ORM:对象关系映射
* 表-->类
* 字段-->属性
* 行记录-->对象
作者:hashifei
出处:https://www.cnblogs.com/hashifei/p/18141183
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?