java学习JSP
概念
简化的Servlet设计,在HTML标签中嵌套Java代码,用以高效开发Web应用的动态网页
作用
替换显示页面部分的Servlet(使用"jsp文件替换XxxJSP.java)
JSP开发
1、创建JSP
在web目录下新建 “.jsp文件”(与WEB-INF平级)
2、编写代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%= new java.util.Date()%>
</body>
</html>
Jsp与Servlet
关系 :
- JSP文件在容器中会转换成Servlet执行。
- JSP是对Servlet的一种高级封装。本质还是Servlet。
区别 : - 与Servlet相比∶JSP可以很方便的编写或者修改HTML网页而不用去面对大量的printn语句。
Jsp实现原理
Tomcat会将xjsp转换成Java代码,进而编译成cass文件运行,最终将运行结果通过response响应给客户端。
文件位置
编译后的jsp在控制台可以看到
Using CATALINA_BASE: "C:\Users\bonia\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Tomcat_9_0_37_JspLearn"
JSP与HTML集成开发
脚本
脚本可以编写Java语句、变量、方法或表达式。
普通脚本
<% java代码%>
经验∶普通脚本可以使用所有Java语法,除了定义函数。
注意∶脚本与脚本之间不可嵌套,脚本与HTML标签不可嵌套
声明脚本
<%! 定义变量 、函数%>
注意∶声明脚本声明的变量是全局变量。
声明脚本的内容必须在普通脚本<% %>中调用。
如果声明脚本中的函数具有返回值,可以使用输出脚本调用<%=%>
输出脚本
<%=java表达式%>
表达式不要加分号
它实际就是普通脚本的out.println(方法名);输出的
注释
指令
用来设置与整个jsp页面下相关的属性
Page指令
<%@page attribute1="value1" attribute2="value2"%>
为容器提供当前页面的使用说明,一个JSP页面可以包含多个page指令
include指令
如果header.jsp中声明了message变量,再到footer里声明了一个message会发生错误,相同作用域内相同变量,会有重名的冲突问题,不建议使用
taglib
动作标签
<jsp:action name attribute="value"/>
动作标签指的是jsp页面在运行期间的命令
include
语法∶<jsp∶include page=相对URL地址"/
>
<jsp∶include>动作元素会将外部文件输出结果包含在JSP中(动态包含)。
'<jsp:include page="index.jsp"/>
注意∶前面已经介绍过include指令,它是将外部文件的输出代码复制到了当前JSP文件中。而这里的jsp∶include动作不同,是将外部文件的输出结果引入到了当前JSP文件中。
useBean
<jsp:useBean id="name" class="classname"/>
jsp∶useBean动作用来加载一个将在JSP页面中使用的JavaBean。
在类载入后,我们可以通过jsp∶setProperty和jsp∶getProperty动作来修改和获取bean的属性。
setProperty
可以在jsp∶useBean元素之后使用jsp∶setProperty进行属性的赋值
getProperty
forward
<jsp:forward page=“url”/>
jsp:forward动作把请求转到另外的界面
param
在下一个页面通过request.getAttribute();获取
9大内置对象
四大作用域对象
pageContext
- pageContext对象是javax.servlet.jsp.PageContet类的实例,拥有作用域,用来代表整个JSP页面。
- 当前页面的作用域对象,一旦跳转则失效
- 通过setattibute("name’value;存储值
- 通过getAttribute(“name”;获取值
- 用于获取其他8个内置对象或者操作其他对象的作用域
EL表达式
EL使JSP写起来更简单、简洁。主要用于获取作用域中的数据
作用
替换作用域对象.getAttribute(“name”);
应用
:
例如:
${requestScope.属性名}若是无值返回的是空,不是null
获取引用类型
存储用setName方法
${requestScope.e.name}调用的是getName方法
EL运算符
隐式对象
JSTL
什么是JSTL
JSTL∶全称Java Server Pages Standard TagLibrary
JSP标准标签库(JSTL)是一个JSP标签集合。
JSTL作用
可对EL获取到的数据进行逻辑操作。
与EL合作完成数据的展示。
导入两个jar文件∶standard.jar和jstljar文件拷贝到/NEB-INF/lib/下
在JSP页面引入标签库
<%@taglib uri=“http∶//java.sun.com/jsp/jst/core” prefix=“c”>
核心标签
条件标签
语法:<c:if test="条件"> </c:if>
多条件
<c:choose>
<c:when test="条件"> </c:when>
<c:otherwise> </c:otherwise>
</c:choose>
迭代foreach标签
MVC框架
MVC又称为编程模式,是一种软件设计思想,将数据操作、页面展示、业务逻辑分为三个层级(模块),独立完成,相互调用
● 模型层(Model)
● 视图(View)
● 控制器(Controller)
MVC并不是Java独有的,现在几乎所有的B/S的架构都采用了MVC模式
● 视图view∶视图即是用户看到并与之交互的界面,比如HTML(静态资源),JSP(动态资源)等等。
●控制器Controller∶控制器即是控制请求的处理逻辑,对请求进行处理,负责流程跳转(转发和重定向)。
● 模型Model∶对客观世界的一种代表和模拟(业务模拟、对象模拟)。
优点
低耦合性∶模块与模块之间的关联性不强,不与某一种具体实现产生密不可分的关联性
高维护性∶基于低耦合性,可做到不同层级的功能模块灵活更换、插拔
高重用性∶相同的数据库操作,可以服务于不同的业务处理。将数据作为独立模块,提高重用性