jsp
Posted macht
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp相关的知识,希望对你有一定的参考价值。
[TOC]
JSP简介
- Java Server Page JSP是一种动态页面技术
- 动态页面技术是可以从数据库实时读取数据,更新页面内容
- 类似:php、ASP.NET、Freemarker、Velocity、Thymeleaf
- sevlet创建的对象是单例的,一旦创建就会一直存在服务器中。
JSP的原理
- JSP本质就是一个Servlet
- 当JSP被一次访问,服务器会将JSP转换为Servlet类,再创建Servlet对象,再由Servlet对象的service方法,通过输出流将html代码发送给浏览器,浏览器对页面进行渲染。后面再访问JSP时,直接调用Servlet对象的service方法。
JSP的页面指令
- 可以对JSP页面进行配置 <%@ page 属性=值 %>
- page指令的属性: language 语言类型 contentType 页面内容类型 pageEncoding 页面编码 import 导入类 import="java.util.List" import="java.util.List,java.util.Map" ignoreEL 是否忽略EL表达式 true 忽略,false 不忽略 errorPage 设置错误页面的路径 isErrorPage 把当前页面作为错误页面 true 是 false 不是错误页面
- taglib指令用于给页面导入标签库 <%@ taglib uri="标签库的地址" prefix="标签库前缀" %>
- include指令用于在当前JSP页面中包含另一个JSP页面 <%@ include src="页面路径" %>
JSP的脚本
JSP是可以将HTML代码和Java代码整合到一起
- 定义全局变量 <%! 定义变量%>
- 一般java脚本 <%java代码%>
- 输出脚本 <%= 输出内容%>
JSP的内置对象
JSP有9个内置对象,一部分是service方法的局部变量
变量名 类型
application ServletContext(Servlet上下文)
session HttpSession(Http会话)
request ServletHttpRequest
pageContext PageContext
page this,当前Servlet对象
config ServletConfig 可以用于读取Servlet的配置信息
out JspWriter字符输出流,用于向浏览器发送数据
response ServletHttpResponse Http响应对象,可以用于向浏览器发送数据、重定向等
exception Exception页面出现异常后的异常对象
前四个对象
共同特点:都可以存取数据
存数据 void setAttribute(String key,Object value) 取数据 Object getAttribute(String key)
区别:
- 数据保存的位置不同,访问的范围不同
- application 数据保存在服务器中,所有用户都可以共享
- 注意:不要在application随便保存数据,数据内存很难得到释放
- session 当一个用户(浏览器)第一次访问服务器时,服务器会 为该用户开辟内存空间,用于保存该用户的数据,此空间就是session,在session中保存的数据可以被当前用户的多个JSP或Servlet共享。
- 注意:不需要多个页面共享的数据不要保存到Session中,Session会在用户访问期间一直保存,Session会在用户断开后30分钟后销毁。
- request 数据保存在请求中,进行页面跳转时,前面的页面或Servlet可以保存数据,由跳转到页面或Servlet来接受。(页面跳转的前后两个页面或Servlet共享)
- 页面forward跳转: request.getRequestDispatcher("路径").forward(请求,响应);
- pageContext 数据保存在当前页面中,只能被当前页面访问
EL表达式
Expression Language 简化JSP的开发,用于读取四大对象中的数据
脚本:
<%=request.getAttribute("name")%>
EL:
读取单个变量
${name}
读取对象的属性
${student.name}
或
${student["name"]}
如果在application、session、request、pageContext都保存相同名字的数据,使用EL读取的是哪一个?
优先级:pageContext > request > session > application
如何分别从四个对象读取相同名字的值
域对象.变量名
域对象 内置对象
applicationScope application
sessionScope session
requestScope request
pageScope pageContext
JSTL标签库
简化JSP开发,把Java代码用标签进行封装,从而实现HTML代码和Java代码解耦。
用法:
- 导入jar包
- 在页面开头添加taglib页面指令 添加核心标签库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- 使用标签
- if标签
<c:if test="EL表达式">
HTML代码
</c:if>
- choose标签
<c:choose>
<c:when test="EL表达式条件">
HTML
</c:when>
<c:when test="EL表达式条件">
HTML
</c:when>
...
<c:otherwise>
HTML
</c:otherwise>
</c:choose>
- forEach标签
- 固定次数循环
<c:forEach var="变量名" begin="起始量" end="结束值" step="递增量"> HTML </c:forEach>
- 遍历集合库名
<c:forEach var="变量名" items="${集合名}"> HTML + ${变量名.属性} </c:forEach>
- 固定次数循环
MVC设计模式
Web企业级开发主流的开发模式
- 该模式的目的:解耦(高内聚、低耦合) Model1(Java和HTML耦合)——> Model2(MVC,代码分层) M Model 模型 和数据相关(实体层、DAO层、Service层) V View 视图 展示数据和用户交互(JSP、HTML、小程序) C Controller 控制器 调用模型,更新视图(Servlet)
- Servlet ——> Service ——> DAO ——> 数据库
- Service是业务逻辑层(实现复杂业务逻辑、事务操作)
- 实现无忧保姆的后台管理系统
实现用户列表的显示
- 导入jar包
- 添加配置文件 如:连接池配置等
- 创建包
- 创建实体类
- 创建工具类、DAO层
- 创建Service层
- 创建Servlet
- 创建JSP
作业:
1、使用MVC模式完成用户表的列表显示
2、创建管理员表
字段:
编号(主键、自增)
用户名 字符串
密码 字符串
创建登录JSP页面,能实现输入账号和密码,进行后台验证,成功后能查看用户列表页面,失败就进行提示
以上是关于jsp的主要内容,如果未能解决你的问题,请参考以下文章