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. [SDOI2008]洞穴勘测

    嘟嘟嘟 写完lct的板儿后觉得这就是一道大水题. 连pushup都不用. 不过还是因为一个zz的错误debug了一小会儿(Link的时候连出自环--) 还有一件事就是Cut的时候判断条件还得加上,因为 ...

  2. WorldWind源码剖析系列:角度类Angle

    PluginSDK中的角度结构体Angle类图如下所示. 角度结构体主要定义了一个弧度表示角度值的字段:double Radians.还有几个表示角度最大值.最小值.非数值和零角度等字段.定义了一个D ...

  3. 将如下三组不同类型的数据利用DataInputStream和DataOutputStream写入文件,然后从文件中读出

    三组数据如下: {19.99 , 9.99 , 15.99 , 3.99 , 4.99} {12 , 8 , 13 ,29 ,50} {"Java T-shirt" , " ...

  4. 接收键盘输入的字符串,用FileWirter类将字符串写入文件,用FileReader类读出文件内容显示在屏幕上

    public class SY63 { public static void main(String[] args) throws Exception { System.out.print(" ...

  5. CSS中的before和:after伪元素深入理解

    1.定义: “伪元素”,顾名思义.就是它创建了一个虚假的元素,并且将其虚假的元素插入到目标元素的内容之前或之后. 2:特点: a.它在实际文档中不改变什么,但是对用户可见,可以通过css控制,源码中看 ...

  6. handsontable 拖动末尾列至前面列位置,被拖动列消失的问题

    问题描述:将最后一列在往前面列位置进行拖动后,被拖动的最后列消失掉了. 解决办法:在handsontabel绑定中去设置data值,取消通过 loadData 绑定data $("#topF ...

  7. js 按指定属性给对象数组排序(json数组)

    有时,我们有一个json对象的数组集合,如何按指定对象属性来进行排序? //fieldArr为一个json对象数组 var fieldArr = fieldArr.sort(compare(" ...

  8. FFmpeg编程学习笔记二:音频重採样

    ffmpeg实现音频重採样的核心函数swr_convert功能很强大,但是ffmpeg文档对它的凝视太过简单.在应用中往往会出这样那样的问题,事实上在读取数据->重採样->编码数据的循环中 ...

  9. 一键安装Docker图形化管理界面-Shipyard

    Shipyard是一款开源的图形化的Docker管理工具,记得以前安装很麻烦的,现在官方有了自动安装脚本,使用非常方便.复制.粘贴.使用,就这么简单.先不研究他是如何实现的,安装使用起来再说. $ c ...

  10. ccf201703-2学生排队

    问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整.一次调整小明可能让一位同学出队,向前或者向后移动一段距离后再插入队列. ...