Head First Servlets & JSP 学习笔记 第七章 —— 作为JSP

<%@ …… %> 这是指令

<%@ page ……import="java.util.Date" %> 这是page指令,import是page指令的一个属性

<% …… %> 这是Scriptlet,里面是纯Java代码,需要分号结尾

<% = …… %> 这是表达式,表达式不用分号结尾;绝对不能把一个返回类型为void的方法用作表达式

JSP经过Web容器的转换,生成了Servlet:

JSP中的Scriptlet和表达式的内容都会放在Servlet的service()方法中,因此都是局部变量。

那么,怎么声明Servlet类的成员变量和方法呢?答案就是:JSP声明

<% ! …… %> 这就是JSP声明。例如<%! int count = 0; %>

JSP声明使用感叹号,后面需要分号结尾。

为JSP配置Servlet初始化参数:

 1 <web-app>
 2     <servlet>
 3         <servlet-name>MyTestInit</servlet-name>
 4         <jsp-file>/TestInit.jsp</jsp-file>  //这个与常规的Servlet不同
 5         <init-param>
 6             <param-name>email</param-name>
 7             <param-value>[email protected]</param-value>
 8         </init-param>
 9     </servlet>
10
11     <servlet-mapping>  //为一个JSP定义Servlet时,还必须为JSP页面定义一个Servlet映射
12         <servlet-name>MyTestInit</servlet-name>
13         <url-pattern>/TestInit.jsp</url-pattern>
14     </servlet-mapping>
15 </web-app>

覆盖jspInit()方法:(这个方法由Servlet的init()方法来调用)

1 <%! public void jspInit(){  //使用JSP声明来覆盖jspInit()方法
2     ServletConfig scg = getServletConfig();
3     String emailAddr = scg.getInitParameter("email");
4
5     ServletContext sct = getServletContext();
6     sct.setAttribute("mail", emailAddr);
7 }

JSP增加了一个作用域,页面作用域:

标准的Servlet作用域有三个:请求、会话、应用(上下文)作用域;

JSP增加了页面作用域(pageContext)

在JSP中,使用4个隐式对象来得到和设置属性:

  Servlet中 JSP中(隐式对象) JSP中(隐式对象)
请求作用域(request) request.setAttribute("foo", Object); request.setAttribute("foo", Object); request.getAttribute("foo");
会话作用域(session) request.getSession().setAttribute("foo", Object);  session.setAttribute("foo", Object); session.getAttribute("foo");
应用作用域(context) getServletContext().setAttribute("foo", Object); application.setAttribute("foo", Object); application.getAttribute("foo");
页面作用域(pageContext)  不适用 pageContext.setAttribute("foo", Object); pageContext.getAttribute("foo");

JSP还可以通过pageContext引用来得到任意作用域的属性,以及设置任意作用域的属性:

1.设置一个会话作用域属性:<% pageContext.setAttribute("foo", Object, PageContext.SESSION_SCOPE); %>

2.设置一个应用作用域属性:<% pageContext.setAttribute("foo", Object, PageContext.APPLICATION_SCOPE); %>

3.得到一个应用作用域属性:<% pageContext.getAttribute("foo", PageContext.APPLICATION_SCOPE); %>

指令有三种:

page指令、taglib指令、include指令

在JSP中禁用脚本元素:(只有这一种方法)

 1 <web-app>
 2     <jsp-config>
 3         <jsp-property-group>
 4             <url-pattern>*.jsp</url-pattern>
 5             <scripting-invalid>   //这个标记让JSP禁止使用脚本元素
 6                 true
 7             </scripting-invalid>
 8         </jsp-property-group>
 9     </jsp-config>
10 </web-app>

在JSP中忽略EL:

方法一:在web.xml中指明:

 1 <web-app>
 2     <jsp-config>
 3         <jsp-property-group>
 4             <url-pattern>*.jsp</url-pattern>
 5             <el-ignored>   //这个标记表示忽略EL
 6                 true
 7             </el-ignored>
 8         </jsp-property-group>
 9     </jsp-config>
10 </web-app>

方法二:或者通过page指令:

<%@ page isELIgnored="true" %>

动作 —— 标准动作和非标准动作:

1 <jsp:include page="wickedFooter.jsp" />    //标准动作
2 <c:set var="rate" value="32" />    //非标准动作

原文地址:https://www.cnblogs.com/czp2bconfident/p/8893899.html

时间: 2024-09-28 14:12:58

Head First Servlets & JSP 学习笔记 第七章 —— 作为JSP的相关文章

JSP学习笔记(一):JSP标签

JSP的六大标签,分别是JSP命令标签.JSP申明标签.JSP script标签.JSP输出标签.JSP注释标签.JSP动作标签. 关于标签的具体用法,还是在实际运用中去体验比较可靠,用的过程中学习是一种很重要的方法.

JSP学习笔记(一):JSP语法和指令

一.语法 1.脚本程序的语法格式: 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. <% 代码片段 %> 2.中文编码问题 如果我们要在页面正常显示中文,我们需要在 JSP 文件头部添加以下代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!D

JSP学习笔记(一):JSP基础

一.原理 1.HttpServlet 是先由源代码编译为class 文件,然后部署到服务器下.先编译后部署. 2.JSP 是先部署源代码后编译为class文件的,先部署后编译.JSP 会在客户端第一次请求JSP 文件时被编译为HttpJspPage 类.该类会被服务器临时存放在服务器的工作目录中. 3.实例:客户端第一次请求 myFirst.jsp 时,Tomcat 先将myFirst.jsp 转化为标准的 Java 源代码 myFirst_jsp.java ,存放在 %Tomcat_Path%

Java学习笔记—第七章 类的深入解析

第七章 类的深入解析 1. 继承 1.1 类继承的方法:在Java中,子类对父类的继承是在类的声明中使用extends关键字来指明的.其一    般格式为:[类修饰符] class <子类名> extends <父类名>{ 类体内容 }.一个类只能直接继承一个    父类,一个父类可以有多个子类. 1.2 成员变量的继承和隐藏:基于父类创建子类时,子类可以继承父类的成员变量和成员方法.但是,     如果在父类和子类中同时声明了一个同名变量,则这两个变量在程序运行时同时存在.即:父

Android学习笔记—第七章 数据解析及读取

第七章 数据解析及读取 网络传输中数据的组织方式:xml.json.http (1)xml:可扩展标记语言 特点:保存少量数据,可跨平台 解析方式:sax.dom.pull a. sax解析: 特点:速度快,占用内存少.事件驱动,不会一次性把所有内容加载到内存中. startElement:元素节点开始 localName:不带前缀的标签名 qName:带前缀的标签名 attributes:节点内的属性和值 <student id ="1"> <name>小明&

Head First Servlets &amp; JSP 学习笔记 第五章 —— 作为Web应用

初始化参数:(init-param) 初始化参数写在web.xml文件中:(写在<servlet>标签内部) 1 <servlet> 2 <servlet-name>BeerAdvisorServlet</servlet-name> 3 <servlet-class>com.example.web.BeerServlet</servlet-class> 4 5 <init-param> 6 <param-name&g

JSP学习笔记(二):JSP四大作用域

一.JSP的9大内置对象(隐式),已经new好了的对象 (1)out:JspWriter的实例,举例: out.print("") out.println("") (2)page:当前JSP页面自己,类似Java中的this用法,用的少 (3)pageContext:page上下文对象. Javax.servlet.jsp.pageContext接口对象,举例: pageContext.setAttribute("x", 100) pageCon

css权威指南学习笔记--第七章

由于之前一直没有系统的看过css相关的书籍,导致自己css方面一直都是处于零散状态.知其然,不知其所以然.所以买了<css权威指南>.虽然比较老了,但是应该也会收获很大. 1 水平方向上 margin-left +border-left+padding-left+width+padding-right+border-right+margin-right 其中红色的是可以设置为auto,当设置为auto时,浏览器会自动计算该值.基于的原则就是 外层包裹容器的width=被包裹元素的width+p

JSP学习笔记(三):JSP配置与EL表达式

一.JSP配置 JSP可以与Servlet一样配置映射,也可以省略. (一)简单配置 1.使用<jsp-file>基础标签 <servlet> <servlet-name>myJsp</servlet-name> <jsp-file>/jsp/base/myJsp.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>myJsp</