JSP总结

1、简介

1、现有技术的不足

Servlet可以通过转发或重定向跳转到某个HTML文档。但HTML文档中的内容不受Servlet的控制。比如登录失败时,跳转回登录表单页面无法显示诸如“用户名或密码不正确”的错误消息,所以我们目前采用的办法是跳转到一个错误信息页面。如果通过Servlet逐行输出响应信息则会非常繁琐。

ServletHtml
长处接收请求参数,访问域对象,转发页面以友好方式显示数据
短处以友好方式显示数据动态显示数据
2、jsp简介

Java Server Pages = JSP

①JSP能够以HTML页面的方式呈现数据,是一个可以嵌入Java代码的HTML。
②JSP不同于HTML,不能使用浏览器直接打开,而必须运行在Servlet容器中。
③JSP的本质是一个Servlet,Servlet能做的事情JSP都能做。

2、HelloWorld

1.代码示例helloworld
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>HelloWorld</h1>
<h2>现在是:<%=new Date()%></h2>
</body>
</html>
2.jsp运行原理

在这里插入图片描述
注意:JSP仅在第一次访问时执行“翻译”和“编译”,之后再请求时就直接运行.class文件了。

3、jsp基本语法

1、jsp模板元素

JSP页面中的静态HTML内容称之为JSP模版元素,在静态的HTML内容之中可以嵌套JSP的其他各种元素来产生动态内容和执行业务逻辑。
JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观

2、jsp表达式:<%= %>
<h2>现在时间是:<%=new Date() %></h2><br>
<%= 1 + 1 %><br>
<%= "hello " + "world" %>

注意:JSP表达式中的变量或表达式后面不能有分号(;),JSP表达式被翻译成Servlet程序中的一条out.print(…)语句。

3、jsp脚本片段:<% %>
<%
	int x = 3;
	out.println(x);

	for(int i = 1; i < 5; i++){
		//out.println("<h" + i + ">世界</h" + i + ">");
%>		
	<h<%=i %>>世界</h<%=i %>>
<%
	}
%>

注意:在脚本片断中可以使用条件、循环、选择等流程控制语句来创建其周围的其他元素的执行逻辑

4、jsp声明:<%! >
<%! int a = 100; %>

注意:我们一般不使用jsp声明来写代码。

5、jsp注释
<!-- 可以写 html注释 -->
<%-- 可以写jsp注释--%>
<% //java注释  %>

<!-- 
● JSP的注释:jsp生成Java源文件时被忽略
● Java的注释:运行class文件时被忽略
● HTML的注释:浏览器解析时被忽略
 -->

6、jsp指令

三个指令:page、include、tablib

  • page
    属性:
    language、
    contentType、
    pageEncoding、
    import(可以单独写在一个page指令中,可以写多个)
    errorPage:指定发生错误的时候,要跳转的错误页面
    isErrorPage:指定当前页面为错误页面,并自动生成exception对象
<%@ page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error.jsp"%>
  • include

    特点:静态引用,静态包含,在jsp引擎将jsp页面解析成.java文件之前,就将子页面和主页面合并在了一起

 <%@ include file="用户列表.jsp"%>
  • taglib:

用来导入外部标签库。
(1)prefix 指定使用标签的前缀
(2)uri 指定标签的uri
(3)tagdir 标签库位置,uri、tagdir都可以指定标签资源,但tagdir指向的是一个目录,使用ti:XXXX时,目录下,必然有个XXXX.tag文件与之对应。

<%@ taglib prefix="" tagdir="" uri="" %>
7、jsp动作标签

1、动作标签:forward
语法:<jsp:forward page=“目标页面”></jsp:forward>
作用:在当前页面中做服务器端的请求转发
2、引用标签、动态包含标签:include
语法:<jsp:include page=“目标页面”></jsp:include
作用:将目标页面动态的引入到当前位置
3、传参标签:param
语法:<jsp:param value=“值” name=“变量”></jsp:param>
作用:由当前页面向目标页面传递指定的参数 --%>

	<jsp:include page="/用户列表.jsp">
		<!-- 使用  jsp:param 作为 jsp:include 
		子节点向目标页面传递 name属性所指定的值,值是value-->
		<jsp:param name="count" value="100"></jsp:param>
	</jsp:include>

4、jsp九大内置对象及其作用

参数:
1.final javax.servlet.http.HttpServletRequest request
获取请求报文(重要)

2.final javax.servlet.http.HttpServletResponse response
发送响应报文(重要)

局部变量
3.final javax.servlet.jsp.PageContext pageContext; 域对象

4.javax.servlet.http.HttpSession session = null; 域对象(重要)

5.final javax.servlet.ServletContext application; 域对象

6.final javax.servlet.ServletConfig config;
转义成servlet之后的配置对象

7.javax.servlet.jsp.JspWriter out = null;
输出流对象(重要)

8.final java.lang.Object page = this;
表示当前的servlet对象

9.exception对象
当在jsp页面中设置isErrorPage="true"时,
在响应的jsp转义的servlet中,会生成exception对象 ,帮助我们更总页面的异常信息

四大作用域对象:
pageContext:作用域范围是当前页面
request:在一次请求中共享数据,例如请求转发的先后两个页面
session:在同一个会话范围内共享数据(用户登录信息)
application:服务器范围内共享数据
总结:
所有的对象都可以在当前页面中进行存值和取值

<!-- 设置作用域对象的值 -->
 <%
 	pageContext.setAttribute("name", "pageContext name");
	request.setAttribute("name", "request name");
	session.setAttribute("name", "session name");
	application.setAttribute("name", "application name");
 %>
 <!-- 获取作用域对象的值 -->
  	pageContext:<%=pageContext.getAttribute("name") %><br>
	request:<%=request.getAttribute("name") %><br>
	session:<%=session.getAttribute("name") %><br>
	application:<%=application.getAttribute("name") %><br>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值