天天看点

JSP总结1、简介2、HelloWorld3、jsp基本语法4、jsp九大内置对象及其作用

1、简介

1、现有技术的不足

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

Servlet Html
长处 接收请求参数,访问域对象,转发页面 以友好方式显示数据
短处 以友好方式显示数据 动态显示数据

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总结1、简介2、HelloWorld3、jsp基本语法4、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声明:<%! >

注意:我们一般不使用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文件之前,就将子页面和主页面合并在了一起

  • taglib:

用来导入外部标签库。

(1)prefix 指定使用标签的前缀

(2)uri 指定标签的uri

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

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>