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. FastDFS_v5.05+nginx+cache集群安装配置手册

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.FastDFS简单介绍 FastDFS是由淘宝的余庆先生所开发,是一个轻量级.高性能的开源分布式文件系统, ...

  2. ERC: Claim Holder #735 status:Discussion

    EIP: Title: Claim Holder Author: Fabian Vogelsteller (@frozeman) Type: Standard Category: ERC Status ...

  3. WorldWind源码剖析系列:二维点类Point2d和三维点类Point3d

    PluginSDK中的点主要有二维和三维两种类型,分别用来描述平面和立体点.其类图如下. 这两个类比较简单.其字段成员主要用来描述点对象在各坐标轴上的分量. 属性Length用来返回二维和三维点的距离 ...

  4. opencv——对象计数

     思路: 1.通过形态学操作.阈值处理.距离变换等方法,使得各个轮廓分开 2.计算轮廓数量 #include <opencv2/opencv.hpp> #include <iostr ...

  5. JS数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)

    最近做项目需要我们前端对金额进行千分位格式化(也就是说每三位用逗号隔开),代码已经做了修改  之前的版本是本人疏忽 真对不住大家了!现在已经做了修改 如果还有不完善的地方 请大家多多指教! 1. 支持 ...

  6. Can't create component 'xxx.xxx.xxx' as it has dependencies to be satisfied

    问题描述: Can't create component 'xxx.xxx.xxx' as it has dependencies to be satisfied. 问题原由: 没有对新建的实体映射类 ...

  7. Elasticsearch 简介

    1. 背景 Elasticsearch 在公司的使用越来越广,很多同事之前并没有接触过 Elasticsearch,所以,最近在公司准备了一次关于 Elasticsearch 的分享,整理成此文.此文 ...

  8. 20155237方自晨 实验四android开发基础

    提交点一 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章: 安装 A ...

  9. SpringBoot整合EHcache学习笔记

    为了提高系统的运行效率,引入缓存机制,减少数据库访问和磁盘IO.下面说明一下ehcache和SpringBoot整合配置 前言介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特 ...

  10. AngularJS + CoffeeScript 前端开发环境配置详解

    AngularJS 号称 '第一框架' ('The first framework') 确实是名不虚传.由其从jQuery中完全转入AngularJS后就有无法离开他的感觉了.虽然AngularJS的 ...