• JSP和JavaBean


    JSP

    JSP全称是Java Server Pages。JSP实际上就是Servlet。

    JSP原理:JSP会被Tomcat翻译成一个Servlet

    JSP语法

    1)JSP的Java脚本表达式

    作用:输出数据到页面上

    语法:<%=表达式%>

    2)JSP的Java脚本片段(实际开发中,应做到JSP中不能出现一行Java脚本片段)

    作用:书写Java代码逻辑

    语法:<%

                       语句1;

                       语句2;

               %>

    原理:其中的语句会原封不动的被服务器翻译到对应的Servlet的service方法中。

    3)JSP的声明

    作用:定义类的成员

    语法:<%!

                       Java代码

          %>

    4)JSP的注释:

    作用:注释Java脚本代码

    语法:<%--这是注释--%>

    JSP的指令给JSP引擎用的(服务器用的)

    基本语法格式:<%@ 指令名称 属性1="值1" 属性2="值2" %>

    作用:告诉服务器,该如何处理JSP中除了指令之外的内容。

    1.page

    作用:定义JSP页面的各种属性

    属性:language:指示JSP页面中使用脚本语言

    extends:指示JSP对应的Servlet类的父类。不要修改

    import:导入JSP中的Java脚本使用到的类或包。

                JSP引擎自动导入以下包中的类:

                javax.servlet.*

                javax.servlet.http.*

                javax.servlet.jsp.*

    主要:一个import属性可以导入多个包,用逗号分隔。

    session:指示JSP页面是否创建HttpSession对象。默认值是true,创建

    buffer:指示JSP用的输出流的缓存大小。默认值是8KB.

    autoFlush:自动刷新输出流的缓存

    isThreadSafe:指示页面是否是线程安全的(过时的)。默认是true(true不安全。)

    errorPage:指示当前页面出错后转向的页面

                        目标页面如果以"/"(当前应用)就是绝对路径。

    配置全局错误提示页面:

    web.xml

    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/error.jsp</location>
    </error-page>
    <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location>
    </error-page>

    eg:

    1.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="/error.jsp"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title></title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
    
      </head>
      <body>
        <%
            int i = 100/0;
         %>
      </body>
    </html>

    error.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title></title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
    
      </head>
      <body>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
        <h1>对不起!服务器忙!</h1>
      </body>
    </html>

    isErrorPage:指示当前页面是否产生Exception对象。

    contentType:指定当前页面的MIME类型。作用与Servlet中的response.setContentType()作                               用完全一致

    pageEncoding:通知引擎读取JSP时采用的编码(因为要翻译)

                                还有contentType属性的作用。

    isELIgnored:是否忽略EL表达式。${1+1}。默认值是false。

    2.include(静态包含:开发中能用静的不用动的)

    作用:包含其他的组件。

    语法:<%include file=""%>file指定要包含的目标组件。路径如果以"/"(当前应用)就是绝对路径。

    原理:把目标组件的内容加到源组件中,输出结果。

    动态包含:采用动作元素:<jsp:include page=""/>路径如果以"/"(当前应用)就是绝对路。

    3.taglib

    作用:引入外部的标签

    语法:<%@taglib uri="标签名称空间" prefix="前缀"%>

               <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

    JSP内置对象(9个JSP内置对象)

    JSP的内置对象引用名称                                  对象的类型

    request                                                     HttpServletRequest

    response                                                   HttpServletResponse

    session                                                     HttpSession

    application                                                 ServletContext

    config                                                       ServletConfig

    page                                                         this(当前Servlet对象)

    exception                                                  java.lang.Throwable

    out                                                           JspWriter

    pageContext                                              javax.servlet.jsp.PageContext

    pageContex详解

    1.本身是一个域对象。

    同时还能操作其他三个域对象(pageContext、ServletRequest、HttpSession、ServletContext)

    本身表示的域范围是本页面

    void setAttribute(String name,Object value)

    void removeAttribute(String name)

    Object getAttribute(String name)

    操作其他三个域对象

    void setAttribute(String name,Object value,int scope)

    void removeAttribute(String name,int scope)

    Object getAttribute(String name,int scope)

     

    参数int scope是由PageContext类提供的静态变量规定的。

    PageContext.PAGE_SCOPE:页面范围(是PageContext本身中的那个Map,代号page)

    PageContext.REQUEST_SCOPE:请求范围(是ServletRequest中的那个Map,代号request)

    PageContext.SESSION_SCOPE:请求范围(是HttpSession中的那个Map,代号session)

    PageContext.APPLICATION_SCOPE:请求范围(是ServletContext中的那个Map,代号application)

     

    Object findAttribute(String name):依次按照page request session application范围搜索指定名称的对象,找到为止。

    2、获取其他8个隐式对象

    3、提供了转发和包含的方便方法

    方法一(转发):

    RequestDispatcher rd = request.getRequestDispatcher("/url");

    rd.forward(request,response);                 

    方法二(转发):

    pageContext.forward("url");

    包含:

    pageContext.include("url");

    四大域对象(两个资源之间互传数据)

    JSP中隐式对象的名称            范围名称                            具体的类型

    pageContext                     page                                 javax.servlet.jsp.PageContext

    request                            request                             javax.servlet.ServletRequest

    session                            session                              javax.servlet.http.HttpSession

    application                        application                         javax.servlet.ServletContext

    JSP常用的动作元素

    <jsp:include/>

    <jsp:forward/>

    <jsp:param/>:在包含和转发时,利用该标签传递请求参数

    JavaBean

    JavaBean是一个遵循特殊写法的普通类

    特殊写法:

    1)必须有默认的构造方法

    2)所有字段为私有的

    3)提供共有的getter或setter

    4)一般实现java.io.Serializable

    应用场景:在企业级开发中,JavaBean是用来传递数据的。

    JSP中操作JavaBean的动作元素

    jsp:useBean

    作用:用于在指定域范围内查找指定名称的JavaBean对象,找到了就直接使用;没有找到,创建一个,并放到指定的域范围内。

    属性:

             id:必须的。

             class:JavaBean的完整类名

             scope:域范围。默认是page范围。可选值:page、request、session、application

    注意:如果该标签有主体内容,只有创建新对象时才会执行。

    jsp:setProperty(必须先使用useBean)

    作用:调用JavaBean的setter方法。还能自动类型转换,仅限基本类型

    属性:

             property:必须的。属性名称。

                                可以使用通配符*。使用前提是请求参数的名称与属性的名称完全一致。

             name:必须的。哪个对象的?即jsp:useBean中的id的取值。

             value:属性的取值。

             param:请求参数名

    jsp:getProperty

    作用:调用JavaBean的getter方法。

    property:必须的。属性的名称

    name: 必须的。哪个对象的?即jsp:useBean中的id的取值。

     eg:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title></title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
      </head>
      
      <body>
        <jsp:useBean id="person" class="cn.lsl.domain.Person" scope="page"></jsp:useBean>
        <jsp:setProperty property="name" name="person" value="zhangsan" />
        <jsp:setProperty property="gender" name="person" value="male" />
        <jsp:setProperty property="married" name="person" value="false" />
        <jsp:setProperty property="birthday" name="person" value="<%=new Date() %>" />
        
        <jsp:getProperty property="name" name="person"/><br />
        <jsp:getProperty property="gender" name="person"/><br />
        <jsp:getProperty property="married" name="person"/><br />
        <jsp:getProperty property="birthday" name="person"/><br />
      </body> 
    </html>

    利用请求参数名设置JavaBean的各种属性

    <!-- http://localhost:8080/JSP/2.jsp?name=zhangsan&gender=male  -->
    <jsp:setProperty property="name" name="person" param="name" />
    <jsp:setProperty property="gender" name="person" param="gender" />
  • 相关阅读:
    Web scraping tutorials with FMiner
    javascript
    Installing perl and writing your first perl program in Ubuntu
    c++
    sudo apt-get install libfcgi libfcgi-dev
    微信JSApi支付~订单号和微信交易号
    微信JSApi支付~坑和如何填坑
    WebApi系列~安全校验中的防篡改和防复用
    EF架构~CodeFirst自关联表的插入
    实时监控Cat之旅~对请求是否正常结束做监控(分布式的消息树)
  • 原文地址:https://www.cnblogs.com/EvanLiu/p/3723611.html
Copyright © 2020-2023  润新知