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页面可以配置多个指令。
?
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的动作标签,与html提供的标签有本质的区别。
动作标签是由tomcat(服务器)来解释执行!它和Java代码一样,都是在服务器端执行。
Html有浏览器执行
<jsp:forward>:转发 他与requestDispatcher的forward方法一样的,一个是在servlet中使用,一个是在jsp中使用!
<jsp:include>:包含 它与requestDispatcher的include方法一样的,一个是在servlet中使用,一个是在jsp中使用!
<%@include%>静态包含 代码编译到一块和<jsp:include>动态包含 各编译各自的代码
<jsp:param>
?
?
????@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); ???????? ????} |
?
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页面中就可以用了
?
原文:http://www.cnblogs.com/chengzhipcx/p/4998556.html