1、什么JSP
* servlet:java编写的处理动态web的技术
* 特点:Java代码中嵌套html代码
* jsp
* 特点:HTMl代码中嵌套java代码
* %tomcat%/conf/web.xml --> <servlet-mapping><servlet-name>*.jsp
* 目的:将页面数据处理与页面显示相分离 2、JSP是如何工作的
* 继承关系
* public final class demo_jsp extends org.apache.jasper.runtime.HttpJspBase
* public abstract class HttpJspBase extends HttpServlet implements HttpJspPage
* 总结:demo_jsp --> HttpJspBase --> HttpServlet
* tomcat调用servlet引擎处理JSP页面
* 位置: %tomcat%/conf/web.xml --> serlvet(*.jsp) --> org.apache.jasper.servlet.JspServlet
* 在web context root 读取指定的文件
*/demo.jsp
* 将读取的文件分析,生成相应的servlet文件,java源文件
* demo_jsp.java
* 目录:%tomcat%\work\引擎\主机\项目名\org\apache\jsp
* 将生成的Java文件,编译成字节码文件
* demo_jsp.class
* 通知servlet引擎处理当前生成好的servlet 3、JSP语言
* JSP指令:配置页面的信息,提供给JSP引擎生产java源文件
* 格式:<%@ 指令 [attribute="value"]%>
* 位置:建议放置带页面的头部
* page指令
* 格式:<%@ page ...%>
* 属性配置:
* pageEncoding:配置当前页面保存信息的编码
* contentType:配置当前页面生成的servlet文件响应浏览器的编码
* response.setContentType("text/html;charset=UTF-8");
* 比较:
* 仅有pageEncoding
* 配置当前页面的编码
* 配置生成servlet文件响应浏览器的编码
* 仅有contentType
* 配置当前页面的编码
* 配置生成servlet文件响应浏览器的编码
* 两个都有
* pageEncoding仅设置当前页面的编码
* contentType仅设置servlet文件响应浏览器的编码
* import:引入当前JSP页面需要使用的Java类或接口的包路径
* 可以重复引用
* 多个之间可以使用逗号分隔
* 导包最后一条可以输入多个分号
* language:确定当前jsp页面使用的语言
* 默认:java
* info:提供对JSP的描述<%@ page info="This JSP Page Written By ZARA" %>
* session:确定当前页面是否可以使用session
* 默认:ture
* extends,确定当前jsp页面在生成servlet文件时,继承的父类
* 扩展
* 例如:page extends="java.lang.String" * isErrorPage:是否是错误页面
* 默认值:false
* 当设置成true,在当前页面将可以使用一个变量 exception
* errorPage:确定错误页面
* 当页面出现异常时,跳转的页面
* / 指 context root
* isThreadSafe:是否是线程安全
* 默认值:true
* 如果设置成false,在生成的java源码中添加implements SingleThreadModel不推荐使用了
* isELIgnored:是否忽略EL表达式
* 默认值:false
* 如果设置true,将忽略EL表达式 * buffer:当前servlet文件的缓存区大小,和autoFlush一起使用
* 默认值是8kb
* autoFlush:是否自动刷新,当buffer缓存区被填写满后,会自动的刷新内容到浏览器 * include指令
* 静态包含:引入其他页面,将其他页面与当前页面合并成一个页面后,再显示给浏览器
<%@ include file=“/1.jsp” %>
* taglib指令
* 用于在JSP页面中导入标签库,常用标签库JSTL
* JSP脚本元素
* 声明标签
* 格式:<%! Java方法或字段 %>
* 此标签中的内容,在JSP引擎生产servlet文件时,将直接拷贝。放置在当前类
* 表达式标签
* 格式:<%= java表达式 %>
* 例如:String str = "abc" + "def ";
* 等于与 out.print( 表达式 );
* 将表达式的结果输出到浏览器
* 代码块标签:
* 格式:<% java代码片段 %>
* 任何方法里面的内容
* 将标签内容完全拷贝,放置到service方法体中,和输出html内容的方法在一起
* 总结:
* 脚本元素不能嵌套使用
* 不能在html注释中使用 * JSP注释
* 格式:<%-- 注释内容 --%>
* HTML注释:<!-- 注释内容 -->
* Java注释:
* 行注释://注释内容
* 块注释:/* 注释内容 */
* 标准JavaDoc注释:/** 注释内容 */
* JSP注释,仅在源码级别有效 * JSP的内置对象
* 个数:9
* 在JSP页面中隐藏的Java对象
* 1、Object page : 当前类的引用
* 作用范围:当前页面
* 2、HttpServletRequest request
* 作用范围:一次请求(可能涉及多个JSP或Servlet,转发)
* 3、HttpSession session
* 作用范围:一个会话
* 4、ServletContext application
* 作用范围:整个web相应
* 5、ServletConfig config
* 当前servlet的配置
* 可以单独配置,把JSP文件当成servlet使用
* 配置文件的位置:WebRoot/web.xml
* 内容
<!-- 注册jsp -->
<servlet>
<servlet-name>jspfile</servlet-name>
<jsp-file>/obj.jsp</jsp-file>
<init-param>
<param-name>user</param-name>
<param-value>lt</param-value>
</init-param>
</servlet> <!-- 映射 -->
<servlet-mapping>
<servlet-name>jspfile</servlet-name>
<url-pattern>/jsp</url-pattern>
</servlet-mapping>
* 注意:
1、使用tomcat,servlet引擎
http://localhost:8080/day08/obj.jsp
2、自定义访问路径
http://localhost:8080/day08/jsp
* 6、HttpServletResponse response
* 响应
* 注意:使用的Writer,所以getOutputStream会出现异常 * 7、Throwable exception
* 错误页面中获得异常信息
* 8、JspWriter out
* public class JspWriterImpl extends JspWriter {
* abstract public class JspWriter extends java.io.Writer { * public class PrintWriter extends Writer { * 9、PageContext pageContext
* 当前JSP页面的上下文对象,管理当前JSP页面的
* 具有其他隐式对象的引用
* 设置属性的值
* 在不同的作用域设置属性值
pageContext.setAttribute("user","liang_page",PageContext.PAGE_SCOPE);
pageContext.setAttribute("user","liang_request",PageContext.REQUEST_SCOPE);
pageContext.setAttribute("user","liang_session",PageContext.SESSION_SCOPE);
pageContext.setAttribute("user","liang_application",PageContext.APPLICATION_SCOPE);
* 从不同的作用域获得属性值
<%=pageContext.getAttribute("user",PageContext.PAGE_SCOPE) %><br/>
<%=pageContext.getAttribute("user",PageContext.REQUEST_SCOPE) %><br/>
<%=pageContext.getAttribute("user",PageContext.SESSION_SCOPE) %><br/>
<%=pageContext.getAttribute("user",PageContext.APPLICATION_SCOPE) %><br/>
* 从不同的作用域,依次查询需要的属性值
* <%=pageContext.findAttribute("user") %>
* page、request、session、application 4、EL表达式,全名为Expression Language
* 功能:获取数据,EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
* 格式:${表达式}
* EL执行
<%@ page isELIgnored="true" %>忽略表达式将会以字符串的形式输出
* out.write("${user}\r\n");
<%@ page isELIgnored="false" %>不忽略,通过proprietaryEvaluate去解析表达式
out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${user}", java.lang.String.class, (PageContext)_jspx_page_context, null, false));
* 注意:
* EL表达式,依次从4个作用域中获取不同的属性值
* page -- request -- session -- application
* EL表达式,如果属性名不存在,返回空字符串 * EL常用对象
pageContext 对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。)
pageScope 代表page域中用于保存属性的Map对象
requestScope 代表request域中用于保存属性的Map对象
sessionScope 代表session域中用于保存属性的Map对象
applicationScope 代表application域中用于保存属性的Map对象
     param         表示一个保存了所有请求参数的Map对象
     paramValues     表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回一个String[]
     header       表示一个保存了所有http请求头字段的Map对象
     headerValues 同上,返回string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]     cookie             表示一个保存了所有cookie的Map对象
    initParam           表示一个保存了所有web应用初始化参数的map对象
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="cn.itcast.servlet.Book"%>
<%@ page import="java.util.Map"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Set"%>
<%@page import="java.util.Iterator"%>
<!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> <%
pageContext.setAttribute("user","liang_page",PageContext.PAGE_SCOPE);
pageContext.setAttribute("user","liang_request",PageContext.REQUEST_SCOPE);
pageContext.setAttribute("user","liang_session",PageContext.SESSION_SCOPE);
pageContext.setAttribute("user","liang_application",PageContext.APPLICATION_SCOPE); //request.setAttribute("user","liang_request");
%>
java <br/>使用java的方式获取user
<%=pageContext.getAttribute("user",PageContext.REQUEST_SCOPE) %><br/>
<!-- 在JSP页面中不再使用Java脚本 -->
el -- <br/>
${user} -- pageContext.findAttribute("user"); <br/>
如果user存储在不同的作用域,则使用以下方式获取
page: ${pageScope.user}<br/>
request:${requestScope.user}<br/>
session:${sessionScope.user}<br/>
application:${applicationScope.user}<br/> <hr/> <% Book book = new Book("b007","Java Core","78");
pageContext.setAttribute("bookObj",book); %>
<!-- 获得JavaBean中的,属性的值 -->
${pageScope.bookObj.id}<br/>
${pageScope.bookObj.title}<br/>
${pageScope.bookObj.price}<br/> <hr/> <%
Map<String,Book> map = new HashMap<String,Book>();
map.put("b001", new Book("b004","Thinking Java","78") ); //迭代器
Set<Map.Entry<String,Book>> set = map.entrySet();
Iterator<Map.Entry<String,Book>> it = set.iterator();
while(it.hasNext()){
Map.Entry<String,Book> entry = it.next();
//entry.getKey()
//entry.getValue()
pageContext.setAttribute("entry",entry);
} %>
${entry.key} <br/>
${entry.value.id}
<hr/> <%=pageContext.getSession().isNew() %><br/>
${pageContext.session.new}<br/>
<hr/> <%=((HttpServletRequest)pageContext.getRequest()).getContextPath() %><br/>
${pageContext.request.contextPath} </body>
</html>

JavaWeb学习之什么JSP、JSP是如何工作的、JSP语言(各种指令和九大内置对象)、EL表达式简单使用(5)的更多相关文章

  1. 重温JSP学习笔记--三大指令九大内置对象

    最近在温习javaweb的相关基础知识,鉴于我弄丢了记满了整整一本的笔记,决定以后把笔记和一些学习上的心得以及碰到的一些问题统统都放在网上,今天看了一下jsp的相关基础,以下是笔记: JSP三大指令: ...

  2. JavaWeb中jsp九大内置对象 和四大作用域

    九大内置对象为 page request response session exception config application out pageContext no 内置对象  类型 1 pag ...

  3. JSP九大内置对象与Servlet学习笔记[转]

    我们常说的JSP有九大内置对象分别为:request.response.session.out.pagecontext.page.exception.application.config. 我们知道, ...

  4. Jsp学习总结(1)——JSP九大内置对象和四种属性范围解读

    一.四种属性范围 1.1.在JSP中提供了四种属性保存范围 page:在一个页面内保存属性,跳转之后无效 request:在一次服务请求范围内,服务器跳转后依然有效 session:-在一次会话范围内 ...

  5. jsp学习——九大内置对象

    JSP一共有九个内置对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 博客:JSP的九 ...

  6. JSP九大内置对象和四个作用域

    JSP九大内置对象和四个作用域 在学习JSP的时候,首先就要先了解JSP的内置对象,什么是内置对象呢?内置对象也叫隐含对象,就是不需要预先声明就可以在脚本代码和表达式中随意使用.而这样的内置对象在JS ...

  7. Java Web(五) JSP详解(四大作用域九大内置对象等)

    前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编 ...

  8. jsp页面九大内置对象

    资源转载自网上,不可用于商用,学习可以.内置对象又叫隐式对象/隐含对象是由WEB容器加载的一组类的实例,不需要预先声明就可以在脚本代码和表达式中随意使用的对象. 这九大隐式对象可以按照期作用分类为: ...

  9. JSP九大内置对象和四大作用域和Servlet的三大作用域对象

    一.JSP九大内置对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 内置对象特点: 由JSP规范提供,不用编写者实例化. 通过Web容器实现和管理 所有 ...

随机推荐

  1. Hashtable和HashMap类的区别

    Hashtable和HashMap类有三个重要的不同之处.第一个不同主要是历史原因.Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现. ...

  2. java中类名,方法,变量,包名等大小写命名规范

    类名:首字母大写,其他单词中首字母大写,其他小写方法名:首字母小写,其他单词中首字母大写,其他小写变量:与方法名规则同包名:全部小写接口interface:I开头

  3. php类与对象

    1.类与对象 对象:实际存在该类事物中每个实物的个体.$a =new User(); 实例化后的$a 引用:php的别名,两个不同的变量名字指向相同的内容 封装: 把对象的属性和方法组织在一个类(逻辑 ...

  4. ssh authentication魔鬼细节--.ssh文件夹权限

    换到7后出现莫名奇妙问题,ssh验证始终不起作用. 服务器 centos7#mkdir ~/.ssh centos7#touch ~/.ssh/authorized_keys centos7#chmo ...

  5. mysql 数据库字符集的指定

    create database mydb default character set utf8 default collate utf8_general_ci;

  6. NDK学习三: 纯手工编译Hello World

      1.配置环境变量 添加make工具path环境变量: E:\Android\android-ndk-r10b\prebuilt\windows-x86_64\bin     2.编写Hello W ...

  7. 关于jquery on方法进行事件绑定触发次数指数叠加的问题

    发生环境: $modal.on('click', '#search',function(e){}); 上面代码的语法是这样的: .on( events [, selector ] [, data ], ...

  8. 基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法

    文章目录 1. 1. 摘要 2. 2. Map-Matching(MM)问题 3. 3. 隐马尔科夫模型(HMM) 3.1. 3.1. HMM简述 3.2. 3.2. 基于HMM的Map-Matchi ...

  9. cannot use the same dataset for report.dataset and page.dataset

    把page中的dataset中填的数据表删除.(改成not assigned)

  10. WebRequest 获取网页乱码

    问题:在用WebRequest获取网页源码时得到的源码是乱码. 原因:1,编码不对 解决办法:设置对应编码 WebRequest request = WebRequest.Create(Url);We ...