Jsp详细

 

九大内置对象

Out jsp的输出流,用来向客户端响应

page 当前jsp对象!他的引用类型是object,即真身中有如下代码:object page=this;

Session httpsession

request     httprequest

response httpsponse

Exception Throwable

application servletcontext

config servletconfig

pagecontext 一个顶九个

 

 

pagecontext

一个顶九个

Servlet中有三大域。Jsp有四大域

1servletContext 整个应用程序

2Session:整个会话(一个会话只有一个用户)

3request一个请求连

4pageContext 一个jsp页面,这个域是在jsp页面和当前jsp页面中使用的标签中共享数据

域对象 可以代理其他域!

 

 

 

Jsp三大指令

一个jsp页面可以配置多个指令。

 

1.Page

%@page language="java" info="xxx"....%

pageEncoding:指定当前页面的编码,在服务器把jsp编译成.java时需要使用pageEncoding

ContentType:它表示一个响应头,Content—type!等同于response.setContentType("text/html;charset=utf-8    ");

Import 导包,可以出现多次

ErrorPage和iserrorpage

如果当前页面抛出异常,那么要转发到一个页面,有errorpage来指定。

Iserrorpage 表示当前页面是否为处理页面!当属性为true时这个页面会设置状态码为500,而且这个页面可以使用九大内置对象的exception。

 

AutoFlush指定jsp的输出流缓冲区满时,是否自动刷新,默认为true,如果为false,那么缓冲区满时抛出异常。

Buffer 指定缓冲区大小,默认为8kb,通常不需要修改。

IsELIgnored 是否忽略el表达式,默认为false,不忽略,即支持!、

 

 

2Include—》静态包含 在运行8之前就已经包含了。

与requestDispatcher的include()方法功能类似

<%@include%> 她在jsp编译成Java文件时完成,共同生成一个Java,然后生成class文件

两个页面的内容不能有相同的标签。被包含的页面路径不能为变量,因为是在编译的时候就要合并页面了,而变量是在运行时才有值。

RequestDispatcher的include()方法,包含和被包含的是两个servlet,及两个.class他只是在响应的时候将包含的内容包含在一块了。

作用:把页面分解了,适用包含的方式组合在一起,这样一个页面中不变的部分,就是一个独立的jsp,而我们只需处理变化的页面。

 

3Taglib—导入标签库

两个属性:

Prefix:指定标签库在本页面的前缀!由是我们自己来起名字

Uri:指定标签库的位置。

 

 

Jsp的动作标签

这些jsp的动作标签,与html提供的标签有本质的区别。

动作标签是由tomcat(服务器)来解释执行!它和Java代码一样,都是在服务器端执行。

Html有浏览器执行

<jsp:forward>:转发 他与requestDispatcher的forward方法一样的,一个是在servlet中使用,一个是在jsp中使用!

<jsp:include>:包含 它与requestDispatcher的include方法一样的,一个是在servlet中使用,一个是在jsp中使用!

<%@include%>静态包含 代码编译到一块和<jsp:include>动态包含 各编译各自的代码

<jsp:param>

 

 

Java bean

    @Test

    public
void fun1() throws Exception{

        String className="com.pcx.domain.Person";

        Class clazz=Class.forName(className);

        Object bean=clazz.newInstance();

        

        BeanUtils.setProperty(bean, "name","张三");

        BeanUtils.setProperty(bean, "age","21");

        BeanUtils.setProperty(bean, "gander","男");

        //拿到其中的属性

        String age=BeanUtils.getProperty(bean, "age");

        System.out.println("年龄为:"+age);

        

        System.out.println(bean);

    }

    

    /**

     * 将一个map中的值封装成一个user对象

     */

    @Test

    public
void fun2() throws Exception{

        Map<String, String>map=new HashMap<String, String>();

        map.put("username", "张三");

        map.put("password", "123");

        User u=new User();

        BeanUtils.populate(u, map);

        System.out.println(u);

    }

    
 

    

    /**

     * 测试传智给的jar包

     */

    @Test

    public
void
fun3(){

        Map<String, String>map=new HashMap<String, String>();

        map.put("username", "张三");

        map.put("password", "123");

        User user=CommonUtils.toBean(map, User.class);

        System.out.println(user);

        

    }

 

El表达式

Jsp内置的表达式语言。

全域查找 ${}

指定区域

${pageScope.xxx}

${requestScope.xxx}

${sessionScope.xxx}

${applicationScope.xxx}

 

El代替的是<%=…%>也就是说el只能做输出!

El表达式可以操作四大域。

如果不存在,则输出空字符串。

而不是null

<body>

 

<%

Adress adress=new Adress();

adress.setCity("济南");

adress.setStreet("长青");

 

Employee emp=new Employee();

emp.setName("李四");

emp.setSalary(124354);

emp.setAdress(adress);

 

request.setAttribute("emp", emp);

%>

el获取request域中的emp属性
<br>

${requestScope.emp.adress.street }

</body>

 

El十一大内置对象

Page Request Session application

11个内置对象 10个是map pagecontext不是map 他就是pageContext 一个顶10个

Param

一个参数${param.username }

访问:/1.jsp?username=123

 

多个参数

${paramValues.hobby[0] }

${paramValues.hobby[1] }

 

访问:1.jsp?hobby=c1&hobby=sj

 

${header['User-Agent'] }

效果: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36

 

 

初始化参数

${initParam.xxx}

 

<context-param>

<param-name>xxx</param-name>

<param-value>XXX</param-value>

</context-param>

<context-param>

<param-name>yyy</param-name>

<param-value>YYY</param-value>

</context-param>

 

拿到cookie对象

${cookie.JSESSIONID }

拿到cookie的值

${cookie.JSESSIONID.value
}

 

 

PageContext

${pageContext.request.contextPath}

 

El函数库(由jstl提供)

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

自定义函数库

写一个类 有静态方法。

写一个在web-inf目录下创建一个tld配置文件

在jsp页面中就可以用了

 

重温jsp③的更多相关文章

  1. 重温JSP学习笔记--与日期数字格式化有关的jstl标签库

    上一篇笔记写的主要是JSTL的core标签库,如果想对一些数字或者日期做一些操作或者在网页上显示指定格式的数字或日期,jstl还提供了另一个fmt标签库,这里简单介绍一下: 第一步,导入标签库: &l ...

  2. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

  3. 重温JSP学习笔记--El函数库

    EL函数库(由JSTL提供的) * 导入标签库:<%@ tablib prefix="fn" uri="http://java.sun.com/jsp/jstl/f ...

  4. 重温JSP学习笔记--El表达式

    el表达式是jsp内置的表达式语言,jsp从jsp2.0开始,就不再提倡使用java脚本,而是用el表达式和动态标签来替代,而el表达式主要替代的是jsp中的<%=....%>,也就是说e ...

  5. 重温JSP学习笔记--JSP动作标签

    上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...

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

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

  7. 重温jsp①

    Jsp就是一个servlet servlet的缺点 不适合设置html响应体,需要response.Getwriter.print(); 优点:动态资源,可以编程. Jsp:在原有的html中加入了J ...

  8. 重温 JSP 与 Servlet

    Java Web使用SSH框架多了,很多基础的 JSP 与 Servlet 的东西都忘记了.最近在 JSP 标签 和 Struts2 包装的 Session 对象的混合使用时弄晕了,就翻书温习下. J ...

  9. 重温JSP学习笔记

    <% double d1 = 3.5; double d2 = 4.4; pageContext.setAttribute("d1", d1); pageContext.se ...

随机推荐

  1. bower包管理工具

    安装: npm install bower -g (全局安装) 验证: bower --version 指令( 以vue为例 ): 1.  bower info vue              查看 ...

  2. node学习笔记_01 环境搭建

    一.下载安装nvm (node版本管理器),方便以后版本切换 nvm list            -> 查看node版本(版本最好在8.0以上,不然在vsCode断点调试进不去,跟node版 ...

  3. python第三十二课——栈

    栈:满足特点 --> 先进后出,类似于我们生活中的子弹夹 [注意] 对于栈结构而言:python中没有为其封装特定的函数,我们可以使用list(列表)来模拟栈的特点 使用list对象来模拟栈结构 ...

  4. python第二十六课——装饰器

    装饰器是闭包的一种使用场景: python中的装饰器在定义上需要传入一个函数对象, 在此函数执行之前或者之后都可以追加其它的操作, 这样做的好处是,在不改变源码(原本业务逻辑的)同时,进行功能的扩展: ...

  5. 编程算法 - 左旋转字符串 代码(C)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/37689725 左旋转字符串 代码(C) 本文 ...

  6. Redis系列二:reids介绍

    一.什么是redis.redis有哪些特性.redis有哪些应用场景.redis的版本 1. 什么是redis redis是一种基于键值对(key-value)数据库,其中value可以为string ...

  7. 使用 rem 作为单位使页面自适应设备宽度

    一.新建 rem.js 文件,代码如下: export default function () { document.documentElement.style.fontSize = document ...

  8. mysql 批量修改字段方法

    一.正式环境操作注意事项: .关闭应用访问或者设置数据库只读 mysql设为只读方法: 开启只读: mysql> show global variables like "%read_o ...

  9. 浅谈SDN架构下的运维工作

    导读 目前国内的网络运维还处于初级阶段,工作人员每天就像救火一样,天天疲于奔命.运维人员只能埋头查找系统运行的日志,耗时耗力,老眼昏花不说,有时候忙了半天还一无所获,作为运维工程师的你,有木有遇到过类 ...

  10. PAT B1003 我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...