首页 > Web开发 > 详细

重温jsp③

时间:2015-11-26 19:03:02      阅读:262      评论:0      收藏:0      [点我收藏+]

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③

原文:http://www.cnblogs.com/chengzhipcx/p/4998556.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!