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代码整合到一起

  1. 定义全局变量 <%! 定义变量%>
  2. 一般java脚本 <%java代码%>
  3. 输出脚本 <%= 输出内容%>

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代码解耦。

用法:

  1. 导入jar包
  2. 在页面开头添加taglib页面指令 添加核心标签库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  3. 使用标签
  • 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标签
    1. 固定次数循环
       <c:forEach var="变量名" begin="起始量" end="结束值" step="递增量">
       	HTML
       </c:forEach>
      
    2. 遍历集合库名
       <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是业务逻辑层(实现复杂业务逻辑、事务操作)
  • 实现无忧保姆的后台管理系统 实现用户列表的显示
    1. 导入jar包
    2. 添加配置文件 如:连接池配置等
    3. 创建包
    4. 创建实体类
    5. 创建工具类、DAO层
    6. 创建Service层
    7. 创建Servlet
    8. 创建JSP

作业:

1、使用MVC模式完成用户表的列表显示
2、创建管理员表
	字段:
	编号(主键、自增)
	用户名 字符串
	密码 字符串
创建登录JSP页面,能实现输入账号和密码,进行后台验证,成功后能查看用户列表页面,失败就进行提示

以上是关于jsp的主要内容,如果未能解决你的问题,请参考以下文章

JSP基础

day06-jsp

jsp

JSP语法

JSP 语法

JSP 基础语法