抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

Hello world!

什么是JSP

  • JSP 与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。
  • JSP全称Java Server Pages,是建立在JAVA基础上的一种网络编程语言,JSP是一种Java servlet(JSP在执行前首先被编译成一个Servlet),主要用于实现Java web应用程序的用户界面部分。
  • 网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。

jsp <-> java(servlet)

C:\Users\卢荟\AppData\Local\JetBrains\IntelliJIdea2021.1\tomcat\20e10a3d-4da9-4eee-b7fa-327b2feb3d84\work\Catalina\localhost\jsp_war_exploded\org\apache\jsp

类似于上述文件目录(tomcat下的webapp目录下存放工程项目,只不过现在tomcat在idea里用)即找到生成的java文件。

可见JSP本质上就是一个Servlet,只不过无需配置映射路径,Web Server会根据路径查找对应的.jsp文件,如果找到了,就自动编译成Servlet再执行。

JSP语法

JSP注释

语法 描述
<%– 注释 –%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译
HTML注释,通过浏览器查看网页源代码时可以看见注释内容

💡脚本(在JSP中编写Java代码)

导入jsp-api.jar和servlet-api.jar(tomcat自带,但是IDE并无提示会报红)

语法 描述
<% 代码片段 %> 一般定义变量和编写语句。
<%! 声明代码 %> 可以声明常量,编写方法,编写类
<%= 表达式 %> 表达式被转化成String,然后插入到表达式出现的地方
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%!
public class MyMath {
int a,b;
public MyMath(int a, int b) {
this.a = a;
this.b = b;
}
int doMath(){
return a+b;
}
}
%>

<%
out.println("打印语句");
MyMath myMath = new MyMath(1, 1);
int num = myMath.doMath();
%>

<h1> 和为<%= num %> </h1>
<div> <%= "<h2>这是一个标签</h2>" %> </div>

对于流程控制语句的编写可能稍微繁琐

1
2
3
4
5
6
7
8
9
10
11
12
<% int day = 1 %>
<% if (day == 1 || day == 7) { %>
<p>今天是周末</p>
<% } else { %>
<p>今天不是周末</p>
<% } %>

<%for ( int fontSize = 1; fontSize <= 3; fontSize++){ %>
<font color="green" size="<%= fontSize %>">
菜鸟教程
</font><br />
<%}%>

当然也可以用out对象输出

1
2
3
4
5
6
7
8
<%
int fontSize;
for ( fontSize = 10; fontSize <= 13; fontSize++) {
out.write("<div>");
out.write(fontSize+"");
out.write("</div><br>");
}
%>

JSP指令

JSP指令用来设置与整个JSP页面相关的属性。

JSP指令 描述
<%@ page 属性名=”属性值” %> 定义页面的依赖属性,导包
<%@ include 属性名=”属性值” %> 包含其他文件(静态包含)
<%@ taglib 属性名=”属性值” %> 引入标签库的定义,可以是自定义标签
1
2
3
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import=" " %>
<%@ include file=" "%>

JSP行为

自行学习

1
<jsp:行为名 属性名="属性值" />

中文编码问题

1
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

💡JSP九大内置对象与四大作用域

四大域对象

对象 作用域 变化操作
pageContext 当前页面有效,当当前页面关闭或转到其他页面时,page对象将在响应回馈给客户端后释放。 跳转页面
request 当次请求有效,可以跨越forward()不重定向跳转前后的两页,可以通过setAttribute()方法实现页面中的信息传递。 两次请求
session 当前会话有效,指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应 关闭浏览器
application 所有应用程序中有效,整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。 关闭服务器
1
2
3
4
5
6
7
8
9
10
<%
pageContext.setAttribute("key", "pageContext");
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", "application");
%>
pageContext的值:<%=pageContext.getAttribute("key") %><br>
request的值:<%=request.getAttribute("key") %><br>
session的值:<%=session.getAttribute("key") %><br>
application的值:<%=application.getAttribute("key") %><br>

九大内置对象

在生成的java文件中可以找到

image-20210712103659945

对象 描述 作用域
request javax.servlet.http.HttpServletRequest 类的实例 request
response javax.servlet.http.HttpServletResponse类的实例 pageContext
out javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。 pageContext
session javax.servlet.http.HttpSession 类的实例 session
application javax.servlet.ServletContext 类的实例。与应用上下文有关 application
config javax.servlet.ServletConfig 类的实例。这个对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等。 pageContext
pageContext javax.servlet.jsp.PageContext 类的实例,提供对JSP页面所有对象以及命名空间的访问 pageContext
page 指向当前JSP对象 pageContext
exception exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象,<%@ page …… isErrorPage=”true” %> pageContext

EL表达式与JSTL标准标签库

自行学习

💡MVC框架

MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。

  • Model(模型):如一个存取数据的对象或 JavaBean
  • View(视图):如jsp动态页面
  • Controller(控制器):控制数据流向模型对象,并在数据变化时更新视图,使视图与模型分离开,如servlet

MVC重要特点就是两种分离:

  1. 视图和数据模型的分离:使用不同的视图对相同的数据进行展示;分离可视和不可视的组件,能够对模型进行独立测试。因为分离了可视组件减少了外部(数据库也是一种外部组件)依赖利于测试。
  2. 视图和表现逻辑(Controller)的分离:Controller是一个表现逻辑的组件,并非一个业务逻辑组件。MVC可以作为表现模式也可以作为建构模式,意味这Controller也可以是业务逻辑。分离逻辑和具体展示,能够对逻辑进行独立测试。

MVC优缺点:

  • 优点:低耦合、重用性高、生命周期成本低、部署快、可维护性高
  • 缺点:没有明确的定义、不适合小、中型应用程序、增加系统结构和实现的复杂性、视图对模型数据的低效率访问

作业

在上一个文档中已经声明,这两节课只要交一个作业就行。

评论




🧡💛💚💙💜🖤🤍