接笔记15.

1、不管是JSP中的<%%>还是<%\=%>最终都将处于servlet的方法体中,那么有没有一种元素可以声明成类的成员呢?

——答案是有,而且非常非常简单,这个元素就是<%!%>,我们用它来解决笔记15中的问题,只需要在原基础上加一个感叹号就可以了。

<%@ page import="Sample.Counter" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Basic Counter</title>
</head>
<body>
<%!
int count = 0;
%>
<p>The page count is: </p>
<%= ++count %>
</body>
</html>

2、我们还可以在感叹号里添加类的成员方法。

JSP隐式对象(内置对象)

1、out并不是唯一的JSP内置对象!

什么是JSP内置对象呢?本质上来说,所有的JSP内置对象最终都将映射为Servlet/JSP API中的某个东西。

例如,内置对象request实质上就是service的参数HttpServletRequest的一个映射。

2、课本练习

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="HobbyPage.do" method="post">
<p>choose a hobby:</p>
<select name="hobby" id="" size="1">
<option value="看书">看书</option>
<option value="打王者荣耀">打王者荣耀</option>
<option value="写代码">写代码</option>
<option value="水群">水群</option>
</select>
<br />
<input type="submit">
</form>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>hi</servlet-name>
<servlet-class>Sample.AddFriends</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>hi</servlet-name>
<url-pattern>/HobbyPage.do</url-pattern>
</servlet-mapping>
</web-app>

AddFriends.java

package Sample;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; public class AddFriends extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8"); List names = new ArrayList();
names.add("Fred");
names.add("Pradeep");
names.add("Philippe"); req.setAttribute("names", names);
RequestDispatcher view = req.getRequestDispatcher("result.jsp");
view.forward(req, resp);
}
}

result.jsp

<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %><%--
Created by IntelliJ IDEA.
User: xkfx
Date: 2017/6/14
Time: 17:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// response.setCharacterEncoding("utf-8");
%>
<p>hello i'm result</p>
<p>The friends who share your hobby <%=request.getParameter("hobby")%> is :</p>
<%
List names = (List) request.getAttribute("names");
Iterator it = names.iterator();
while(it.hasNext()) {
out.println(it.next() + "<br />");
}
%>
</body>
</html>

写这道题碰到的两个极端坑爹的地方:

  1. html中,submit的参数是value而不是文本!更详细可以参考这里:Java Web开发之Servlet获取表单值
  2. 要想最终得到的html显示中文,既不是在AddFriends.java中 resp.setCharacterEncoding("utf-8");也不是在result.jsp中  response.setCharacterEncoding("utf-8"); 而是在AddFriends.java中 req.setCharacterEncoding("utf-8");

【Head First Servlets and JSP】笔记16:JSP隐式对象(内置对象)的映射关系的更多相关文章

  1. JSP的九个隐式(内置)对象

    1.out 转译后对应JspWriter对象,其内部关联一个PrintWriter对象.是向客户端输出内容常用的对象. 2.request 转译后对应HttpServletRequest对象.客户端的 ...

  2. JavaWeb学习笔记--2.jsp指令元素、动作元素、内置对象

    目录: 一.指令 1.1 page指令 :page指令有13种属性 1.2 include指令:include指令有1种属性,为file.(注意<%@ include%>和<jsp: ...

  3. JSP三个指令及9个内置对象

    注:本文编写方便自己以后用到时查阅 三大指令:include. page.taglib include指令:  作用: 在当前页面用于包含其他页面 语法: <%@include file=&qu ...

  4. JSP EL表达式 与输入有关的内置对象

    与输入有关的隐含对象有两个param和paramValues,用来取得用户的请求参数.在使用EL之前可以使用如下代码取得用户的请求参数: request.getParameter(String nam ...

  5. JSP学习 三大指令、九个内置对象、JavaBean、EL表达式

    1.page-->最复杂:<%@page language="java" info="xxx"...%> * pageEncoding和con ...

  6. web前端学习(四)JavaScript学习笔记部分(6)-- js内置对象

    1.JS内置对象-什么是对象 1.1.什么是对象: JavaScript中的所有事物都是对象:字符串.数值.数组.函数 每个对象带有属性和方法 JavaScript允许自定义对象 1.2.自定义对象: ...

  7. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

  8. JSP 脚本中的 9 个内置对象

    JSP 脚本中包含了 9 个内置对象,这 9 个内置对象都是 Servlet API 接口的实例,只是 JSP 规范对它们进行了默认初始化. 这 9 个内置对象如下: 1.application:ja ...

  9. 详解JSP九个内置对象

    [JSP]☆★之详解九个内置对象       在web开发中,为方便开发者,JSP定义了一些由JSP容器实现和管理的内置对象,这些对象可以直接被开发者使用,而不需要再对其进行实例化!本文详解,JSP2 ...

  10. jsp中的四个作用域,九个内置对象分别是什么?

    九大内置对象: 内置对象(又叫隐含对象),就是在jsp中,不需要创建(由服务器<容器>来创建),可以直接使用的对象. 对象 含义 类 作用域 request 请求对象 类型 javax.s ...

随机推荐

  1. if not aa 表示如果aa等于空就是true 相当于if not aa 相当于 if aa== 空

    aa='tt' print(not aa) #表示 bb是空的 not 表示空 bb='' print(not bb)

  2. Chromium浏览器组件设计意图

    在文章開始之前.我要叽歪几句,一上来就看Chrome的代码.简直晕头转向,摸来摸去莫不着头脑,好不easy看了一点点代码.却犹如瞎子摸象.无法众观全局.以下这篇小文,简介当中一个重要的模块--Comp ...

  3. 没有Promise的时候自己处理复合异步请求

    function getList(options){ $.ajax(success:funciton(){ if(options.callback) options.callback.call(); ...

  4. SEO前端需要注意的地方

    1 合理的title ,description ,keyswords 搜索引擎对这三项的权重逐渐减小,title 强调重点即可,重要的关键字不要超过两次,而且要靠前. 2 不同的tilte要有所不同, ...

  5. db2 blob EMPTY_BLOB()

    --针对BLOG类型的列,写入一个0长度的字符串

  6. python3----练习题(三级菜单)

    三级菜单程序. 运行程序输出第一级菜单. 选择一级菜单某项,输出二级菜单,同理输出三级菜单. 退出时返回上一级菜单 menu = { '北京市': { '东城区': { 'aa', 'bb', }, ...

  7. CodeIgniter框架——知识要点汇总

    NO1.学习要点: 一.CodeIgniter 框架的简介 二.CodeIgniter 框架的安装 三.CodeIgniter 框架的目录结构分析 四.CodeIgniter 框架是如何工作的? 五. ...

  8. SonarQube 平台搭建

    1. 前期准备 ① 环境 jdk 1.8 配置(见其他随笔) MySQL 5.7(见其他随笔) ② 工具下载 sonarqube 下载 <链接:https://pan.baidu.com/s/1 ...

  9. Linux下OpenOffice的安装与启动

    公司项目需求中增加了文档预览功能,所以采用了OpenOffice提供的将office文件转换为pdf的工具.那么我们的程序运行在服务器端,服务器系统版本多是Linux,因此有必要记录下Linux下Op ...

  10. geometric mean

    w