zoukankan      html  css  js  c++  java
  • 重温jsp③

    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页面中就可以用了

     

  • 相关阅读:
    Python操作RabbitMQ
    数组的排序算法
    元类
    Python 中的单例模式
    JS的Ajax和同源策略
    Ajax
    Linux目录结构以及文件操作
    Pymysql
    struts2拦截器和过滤器区别
    为Github 托管项目的访问添加SSH keys
  • 原文地址:https://www.cnblogs.com/chengzhipcx/p/4998556.html
Copyright © 2011-2022 走看看