JSP使用指南

1、JSP(Java Server Page)的基础

 作用

 用Java语言开发开发动态网页的技术

 运行过程

JSP源码,jsp本质上也是一个servlet,也有servlet的生命周期,jsp、servlet分别负责数据的处理和数据的显示

public final class _01_hello_jsp extends org.apache.jasper.runtime.HttpJspBase
2、 JSP的语法

2.1 Jsp模板
Jsp文件中html代码部分就是模块
2.2 Jsp表达式
语法: <%=变量或表达式%>
作用: 向浏览器输出变量的值或表达式计算的结果
注意:
1)其原理是使用out.print(name );方法向浏览器写出内容
2)结尾不能使用分号
2.3 Jsp脚本
语法: <% java代码 %>
作用: 执行java代码
注意:
1)其原理是直接把java脚本代码翻译到java文件的_jspService方法中执行。
2)Jsp脚本可以穿插html代码混合使用
2.4 Jsp声明
语法: <%! 变量或方法%>
作用: 用于声明jsp文件的变量和方法
注意
1)声明的是成员变量和成员方法。
2)方法不能在脚本中定义,而只能在声明中定义。
3)不能声明和翻译成的java文件中原有方法重复!!!
2.5 Jsp注释
语法: <%-- jsp注释--%>
注意:
1)html注释是会被翻译到java源文件中,也会被执行
2)jsp注释是不会翻译到java源文件中,不会被执行。

3、JSP的三大指令

3.1 taglib指令
taglib指令主要是用于导入jsp的标签库。
3.2 include指令
include指令用于导入其他页面文件。
语法: <%@include file="导入的页面路径"%>
注意:
1)包含与被包含的页面先合并内容翻译到一个java源文件中,再编译执行一个java文件。(先合 并再翻译),叫静态包含(源码包含)
2)被包含的页面不要使用全局的html标签。(html/head/title/body)
3.3 page指令
page指令主要是用于告诉tomcat服务器如何翻译jsp文件。(jsp->java文件)

<%@ page
language="java" --告诉服务器以什么语言来翻译jsp文件
import="java.util.*,com.qf.model.*" --导包。多个包用逗号分隔
java.util.Date,java.text.SimleDateFromat
jsp编码相关的
pageEncoding="utf-8" --jsp翻译成java文件时使用的编码
contentType="text/html; charset=utf-8" --服务器返回给浏览器的数据类型和编码

jsp中涉及中文编码问题:
1)保存jsp文件时的编码(另存为)
2)jsp翻译成java文件时的编码(pageEncoding)
3)服务器输出到浏览器的数据编码(contentType)

注意:
1)contentType属性如果不写,会参考pageEncoding的编码
2)在ecplise中开发jsp,保存文件时的编码会参考pageEncoding编码

结论:
在ecplise中开发jsp文件,只需要在page指令中设置pageEncoding的属性即可解决中 文乱码问题!!

错误页面相关的
errorPage="error.jsp" --指定错误页面
isErrorPage="false" --指定当前页面是否为错误页面。如果是true,那么就可以是exception内置对象,如果false,则不能使用exception内置对象。exception用于得到错误信息。

全局错误页面配置:
在web.xml文件中设置
通常配置两种错误: 404 500

<!-- 配置全局的错误处理页面 -->
<error-page>
<error-code>404</error-code>
<location>/common/404.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/common/500.jsp</location>
</error-page>

buffer="8kb" --jsp页面的缓存区大小
session="true" --是否打开session功能。是否可以使用session内置对象
isELIgnored="false" --是否忽略EL表达式。false,不忽略,可以使用EL;true,不 能EL

%>

4、JSP的九个内置对象

对象名 对应的类型 备注
request HttpServletRequest 请求对象,封装请求信息
response HttpServletResponse 响应对象,封装响应信息
config ServletConfig servlet配置对象,封装servlet配置信息
application ServletContext servlet的上下文对象,代表整个web应用环境
session HttpSession 会话对象。用于保存会话数据
exception Throwable 异常对象,用于封装异常信息
page Object 代表当前jsp翻译成java类对象
out JspWriter jsp页面缓存对象,相当于带缓存功能的PrintWriter
pageContext PageContext jsp的上下文件对象,代表当前jsp的环境

out的使用:

out.write(“内容”);
exception:

exception.getStackTrace()
applicaion:

application.getContextPath()
pageContext:

//要使用8个内置对象
							pageContext.getSession();
							pageContext.getRequest();
							pageContext.getResponse();

<%--findAttribute 先检索  page  >>  request  >> session  >> application --%>

pageContext.findAttribute("session")

四个域对象

page域: 处于同一个jsp页面中数据共享是有效的!!
request域:处于同一个请求中数据共享是有效的!!(使用转发)
session域:处于同一个会话中数据共享是有效的!!(同一个session对象)
application域:处于同一个web应用中数据共享是有效的!!

域对象的方法:

setAttribute(name,object) ; 保存数据方法
getAttribute(name) 获取数据
romveAttribute(name) 清除数据

JSP总结:

Jsp就是一个servlet!!!

Servlet的作用:使用java代码开发动态资源。可以写java代码,输出html代码
Jsp的作用: 使用java代码开发动作资源。可以写java代码,也可以输出html代码。

项目中可以会涉及的工作:
1)接收参数
2)处理业务逻辑
3)跳转其他资源
4)显示数据

Servlet:擅长写java代码
Jsp:擅长显示数据

6、EL表达式:用于替代jsp页面中的jsp表达式

下面是jsp表达式与EL表达式的对比

jsp:

<%=application.getContextPath() %>

EL:

${applicationScope.pageContext}

EL表达式的语法:

1)获取数据
a)在四个域中获取
${变量}
b)指定域获取数据
${域范围.变量}

域范围: pageScope -> requestScope -> sessionScope -> applicationScope

2)EL获取普通对象数据
${student.name} 注意name表示调用getName()方法
3)EL获取集合数据(List和Map集合)
${map[key].name} 注意:map[key] 表示调用map对象的get(key)方法获取map的值对象
4)EL可以使用表达式
算术表达式 : ${a+b}
比较表达式: ${a>b}
逻辑表达式 : ${true && true}
判空表达式: ${empty name} 表示判断name为null或者空字符

7、JSP标签(Eclipse需要导入jar包)

作用:

Jsp标签主要在jsp页面执行java代码,用于替换jsp脚本。

EL表达式局限:
1)不能保存数据,只能获取数据
2)没有条件判断逻辑
3)没有数据遍历功能

7.1、 Jsp内置标签
<jsp:forward/> 转发标签
用于转发
<jsp:param/> 参数标签
<jsp:incude/> 包含标签
用于包含其他页面

注意:
1)其原理是包含与被包含的页面先各自翻译成独立的java源文件,然后再运行时合并再一 起。(先翻译再合并),这叫动态包含

==== 静态包含 vs 动态包含====
1)原理不一样
a)静态包含(先合并再翻译)
b)动态包含(先翻译再合并)
2)语法不一样
a)静态包含( includ指令: <%@include%> )
b)动态包含 (include标签: <jsp:include />)
3)参数传递不同
a)静态包含不能传递参数
b)动态包含可以向被包含页面传递参数

7.2、jstl标签使用

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

7.3、 核心标签库
保存数据:
<c:set></c:set>
获取数据
<c:out value=""></c:out>
单条件判断:
<c:if test=""></c:if>
多条件判断
<c:choose></c:choose>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
数据遍历
<c:forEach></c:forEach>
<c:forTokens items="" delims=""></c:forTokens>

<c:set scope="session" value="tom" var="s"></c:set>
	session===>${s }
	<c:out value="${s }" default="not"></c:out>
	<c:if test="${s==null }">
	true就走里面
	</c:if>
	<c:choose>
	<c:when test="${empty s}">
	用户未登录
	</c:when>
	<c:otherwise>
	欢迎你
	</c:otherwise>
	</c:choose>
	
	
	<%--
	begin:开始下标
	end:结束下标
	items:要遍历的数组
	setp:步长
	var:item,数组中单个的值
	 --%>
	<c:forEach begin="0" end="${stus }.size()" items="${stus }" step="1" var="item">
	${item.name12 }
	</c:forEach>
	<c:forTokens items="123-23-22-55" delims="-" var="item">
	${item }
	</c:forTokens>
以上就是JSP的全部内容..

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值