Java 动态页面技术 之 jsp

动态页面技术(JSP/EL/JSTL

php,asp(.net):html中嵌套响应语言    java不行

servlet技术:在java代码中嵌套html  response.getWriter().write("<html>");

jsp技术:在html中嵌套java代码,擅长写html代码  本质是servlet

JSP技术

jsp在创建/修改后第一次被访问时会被Web容器翻译成servlet,再执行

第一次访问---->helloServlet.jsp--(jsp后缀的运行JspServlet生成)

-->helloServlet_jsp.java(在Tomcatwork目录中)---->编译运行

<html代码> 翻译到service方法内out.write("<html>");

<%java代码%> 翻译到service方法内 不能写方法

<%=java变量或表达式> 翻译到service方法内 out.print() 输出到前端  

<%!java代码%> 翻译成servlet的成员变量/方法

Html注释 <!--注释-->   jsp源码、翻译后的servlethtml源码

java注释 //单行  /*多行*/ jsp源码、翻译后的servlet

jsp注释 <%--注释--%> jsp源码

jsp指令

1page指令 当前页面的信息(实际开发中默认)

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

language jsp脚本的嵌入语言

pageEncoding :当前jsp文件编码(它包含contentType)

contentType :翻译成response.setContentType(text/html;charset=UTF-8)

session :翻译时自动创建session  默认=true

import :导入java的包  写类名+Alt+/

errorPage :当前页面出错(500)后跳转到哪个页面  =http://...  

isErrorPage :出错后跳转的页面设置 =true

WEB项目访问报错 跳转 设置web.xml   errorPage优先于web.xml的设置

<error-page>

<error-code>404</error-code>

<location>/error.jsp</location>

</error-page>

<error-page>

<error-code>500</error-code>

<location>/error.jsp</location>

</error-page>

2include指令 包含其他页面(静态包含:写入同一个servlet

<body>

<%@ include file=""/header.jsp""%>header.jsp页面嵌入页面中

这是正文

</body>

3taglib指令 引入标签库(jstl标签库、struts2标签库)

格式:<%@ taglib uri="标签库地址" prefix="前缀"%>

 

jsp动作标签

页面包含:<jsp:include page="被包含的页面"/>

(动态包含 翻译成两个servlet 运行时引入)

请求转发:<jsp:forward page="要转发的资源" />

跳转/包含页面指定参数:<jsp:param name=" "  value=" ">

 

jsp内置/隐式对象

jsp被翻译成servlet后,service方法中有9个对象定义并初始化,

可以在jsp文件中直接使用

名称    类型                描述

out    javax.servlet.jsp.JspWriter       用于页面输出  字符流

request  javax.servlet.http.HttpServletRequest  客户端请求信息

response   javax.servlet.http.HttpServletResponse 服务端响应信息

config  javax.servlet.ServletConfig         服务器配置,获取初始化参数  init()方法中

session  javax.servlet.http.HttpSession       客户端会话信息

application  javax.servlet.ServletContext       WEB项目信息

page    java.lang.Object          当前页面转换后的Servlet类的实例(类似this

pageContext   javax.servlet.jsp.PageContext       JSP的页面容器

exception   java.lang.Throwable      JSP页面的异常,在错误跳转页中才有 存储错误信息

 

(1)out对象 字符缓冲流 向客户端输出内容----out.write()

out缓冲区数据 要先刷到response缓冲区 再 被Tomcat获取内容

<%@ page buffer="8kb"> out缓冲区大小 默认8kb

buffer="0kb" 关闭out缓冲区 内容直接写到respons缓冲器

 

(2)pageContext域对象 jsp页面的上下文对象

pageContext.setAttribute(String name,Object obj) //page

pageContext.setAttribute(String name,Object obj,int scope)//(, , )

request域: pageContext.REQUEST_SCOPE

session域: pageContext.SESSION_SCOPE

application域: pageContext.APPLICATION_SCOPE

pageContext.getAttribute(String name)

pageContext.getAttribute(String name,int scope)

pageContext.removeAttrbute(String name)

pageContext.removeAttrbute(String name,int scope)

<%

//request.setAttribute("name", "zhangsan");

pageContext.setAttribute("name", "lisi",pageContext.REQUEST_SCOPE);

String name=

(String)pageContext.getAttribute("name", pageContext.REQUEST_SCOPE);

%>

pageContext.findAttribute(String name)//从域(范围由小到大)中找

<%=pageContext.findAttribute("name")%

 

域范围(由小到大)page<request<session<application

page :当前jsp页面

request :一次请求

session :一次会话

application :整个web应用

pageContext可获得其他8大隐式对象   方法传参时只需要传pageContext

pageContext.getRequest() pageContext.getSession()

 

原文地址:https://www.cnblogs.com/javscr/p/10286016.html