zoukankan      html  css  js  c++  java
  • .Net转Java自学之路—基础巩固篇二十七(JSP、JavaBean、内省)

    JSP:

       全称:Java Servlet Pages

      JSP和Servlet分工:

        JSP:作为请求发起页面、请求结束页面。

        Servlet:作为请求中处理数据的环节。

      JSP = html + java脚本 + jsp标签(指令)

      JSP中无需创建即可使用的对象一共有九个,被称为九大内置对象。

      九大内置对象

        out:JspWriter,等同于response.getWriter(),用来向客户端发送文本数据。

        config:ServletConfig

        page:当前JSP页面的this,即当前对象。

        pageContext:PageContext,页面上下文对象。

        exception:Throwable,只有在错误页面中可以使用这个对象。

        request:HttpServletRequest

        response:HttpServletResponse

        application:ServletContext

        session:HttpSession 。若JSP页面中有<%@page session="false" %>,则该页面不能使用session

      三种Java脚本:

        <% ... %>:Java代码。

        <%=... %>:Java表达式,用于输出(常量、变量、表达式)的结果

        <%!... %>:声明。创建类的成员变量和成员方法。

      原理:

        JSP其实就是一个特殊的Servlet。

        当JSP页面第一次被访问时,服务器会把JSP编译成Java文件,这个Java文件其实就是一个Servlet类。然后把Java编译成.class。然后创建该类对象,最后调用它的service()方法。第二次请求同一JSP时,直接调用service()方法。

        在tomcat的work目录下可以找到JSP对应的.java源文件。

      JSP注释:

        <%-- --%>:当服务器把JSP编译成Java文件时已经忽略了注释部分。

      指令:

        一个JSP页面可以有0~N个指令的定义。

        JSP的三大指令:page、include(静态包含)、taglib(导入标签库)

        page:

          格式:

    <%@page 属性名称="属性值" %>

          pageEncoding和contentType的作用:

            pageEncoding:指定当前页面的编码,在服务器要把JSP编译成.java时需要使用pageEncoding

            contentType:标志添加一个响应头Content-Type。等同于response.setContentType("text/html;charset=utf-8");

            若俩个属性只提供一个,那么另一个默认值为设置的那一个。若俩个属性都没有提供,那么默认为iso

          import:导包,可以出现多次。

          errorPage和isErrorPage的作用:

            errorPage:当前页面如果抛出异常,那么要转发到那个页面由errorPage来指定。

            isErrorPage:指定当前页面是否为处理错误的页面。当属性为true时,这个页面会设置状态为500,而且这个页面可以使用9大内置对象的exception

            web.xml也可以指定错误页面,使用<error-page>,而<error-page>有俩种使用方式:

    <error-page>
        <error-code></error-code>
        <location></location>
    </error-page>
    <error-page>
        <exception-type></exception-type>
        <location></location>
    </error-page>

            error-code:指定响应码。404、500等。

            location:指定转发页面。

            exception-type:指定抛出的异常类型。

          autoFlush和buffer:

            autoFlush:指定JSP的输出流缓冲区满时,是否自动刷新,默认为true。若为false,那么缓冲区满时会抛出异常。

            buffer:指定缓冲区大小,默认为8kb,通常不需要修改。

          isElIgnored:是否忽略EL表达式,默认为false,不忽略,即支持。

          pageContext:Servlet中有三大域;而JSP中有四大域,pageContext就是最后一个域对象。

            四大域:

              ServletContext:作用于整个应用程序。

              session:作用于整个会话,一个会话中只有一个用户。

              request:作用于一个请求链。

              pageContext:作用于一个JSP页面。

            该域是在当前JSP页面和当前JSP页面中使用的标签之间共享数据。

            功能:

              1、域对象;

              2、代理其他域:pageContext.setAttribute("xxx","XXX",PageContext.SESSION_SCOPE);

              3、全程查找:pageContext.findAttribute("xxx");依次在page、request、session、application四个域范围内查找名称为xxx的数据。page优先级最高。

              4、获取8个内置对象:

    JSPWriter getOut();//获取out内置对象
    ServletConfig getServletConfig();//获取config内置对象
    Object getPage();//获取page内置对象
    ServletRequest getRequest();//获取request内置对象
    ServletResponse getResponse();//获取response内置对象
    HttpSession getSession();//获取session内置对象
    ServletContext getServletContext();//获取application内置对象
    Exception getException();//获取exception内置对象

        include:

          静态包含。与requestDispatcher的include()方法功能相似。

          <%@include%>:它是在JSP编译成Java文件时完成的。他们共同生成一个Java文件(就是一个Servlet),然后再生成一个class。

          requestDispatcher的include()时一个方法,包含和被包含的时俩个Servlet,即俩个class;他们只是把响应的内容再运行时合并了。

          作用:

            把页面分页了,使用包含的方式组合再一起,这样一个页面中不变的部分,就是一个独立的JSP,而我们只需要处理变化的页面。

        taglib:导入标签库

          俩个属性:prefix、uri

          prefix:指定标签库在本页面的前缀,由我们自定义前缀名。

          uri:指定标签库的位置。<%@taglib prefix="pre" uri="/xxx-tags"%>

            前缀的用法实例:<pre:text>

      JSP动作标签:

        JSP的动作标签与html提供的标签由本质的区别。动作标签是由tomcat来解释执行。html由浏览器来执行。

        <jsp:forward>:转发;与requestDispatcher的forward()是一样的,一个是在Servlet中使用,一个是在JSP中使用。

        <jsp:include>:包含;与requestDispatcher的include()是一样的,一个是在Servlet中使用,一个是在JSP中使用。

        <jsp:param>:用来作用forward和include的子标签,用来给转发或包含的页面传递参数。

      自动重新加载设置:

        tomcat>>conf>>context.xml中元素Context的reloadable属性设置为true

        <Context reloadable="true">

        reloadable:重新加载。

    JavaBean:

       规范:

        必须要为成员提供get/set方法。两者只提供一个也是可以的。

        必须有默认构造器(无参的)

        一般对应具有get/set方法的成员变量称之为属性。

        其实就算一个属性没有对象的成员变量,只有get/set方法也是可以的。其实属性名称就是get/set方法去除get/set后,再把首字母小写。

    内省:

       内省类>>bean信息>>属性描述符>>属性的get/set对象的Method>>反射

      commons-beanutils 它依赖内省完成。内省依赖反射

      工具包:commons-beanutils.jar、commons-logging.jar

    BeanUtils.setProperty(bean,name,value);//设置属性值
    String BeanUtils.getProperty(bean,name);//获取属性值
    BeanUtils.populate(Map,Object);
    CommonUtils.toBean(map,Object);//封装数据
    
    
    //例:封装表单数据到自定义对象中
    ClassName cn=CommonUtils.toBean(request.getParameterMap(),ClassName.class);

    实例:将一个Map封装到一个bean中

    Map<String,String> map=new HashMap<String,String>();
    map.put("uname","zhangsan");
    map.put("pwd","123456");
    
    User us=new User();
    BeanUtils.populate(us,map);
    //
    User us=toBeans(map,User.class);
    
    
    public static <T> T toBeans(map,Class<T> clazz){
        try{
            T bean=clazz.newInstance();//创建指定类型的javabean对象
            beanUtils.populate(bean,map);//把数据封装到javabean中
            return bean;
        }catch(Exception ex){
            throw new RuntimeException(ex);
        }
    }

      JSP中与javaBean相关的标签:

        <jsp:userBean>:创建或查询bean 。

          <jsp:userBean id="user" class="包名" scope="session">

          在session域中查找名为user的bean,若不存在,创建之。

        <jsp:setproperty>:设置

          <jsp:setproperty property="uname" name="user" value="admin">

          设置名为user的这个javaBean的uname属性值为admin 。

        <jsp:getProperty>:获取

          <jsp:getProperty property="uname" name="user">

          获取名为user的javaBean的名为uname属性值

  • 相关阅读:
    Feature部署EventHandler注意事项
    QuickPart Permission问题
    Vista SP1、IIS7,安装ASP.Net 1.1、VS2003、NetAdvantage 2004vol、Sql Server2000全攻略
    MOSS/Sharepoint 2007 创建网站集之后,链接出现“未找到文件”错误提示
    将 MS SQL Server 2005 SP2 整合到安装文件【脚本修正】
    QuickPart功能改进_Sharepoint_MOSS
    部署WebPart的两种方式
    博客园怎么了?
    Apache2.2.8、php5.2.6、mysql5、phpMyAdmin2.11.6在Windows Vista下的安装和配置
    tz2txt的安装与使用
  • 原文地址:https://www.cnblogs.com/zltao/p/10388273.html
Copyright © 2011-2022 走看看