zoukankan      html  css  js  c++  java
  • java–JSP

    JSP看起来像HTML,其中HTML代码叫做模板数据,java Scriptlet代码叫做JSP元素

    JSP是一种Servlet,但与HttpServlet的工作方式又不太一样。第一次访问JSP时,tomcat会先将jsp转为标准的java代码,然后将java代码编译为class文件,最后运行class,以后访问时,jsp不该动的情况下,会一直调用这个class。

    看看转化过的jsp java类文件源码,可以发现,jsp和servlet基本没啥区别。

    JSP标签

    JSP脚本必须使用 <% %>括起来,语句必须遵循java语法。

    <html>
    <body>
    
    <%
    	System.out.println("aa");
    %>	
    	
    </body>
    </html>

    JSP输出

    在servlet中,输出语句是 out.println(),这里jsp中的等效语法是 <%= %>

    <html>
    <body>
    <%
    	int num = 10;
    	int result = 1;
    	for( int i = 1; i <= num; i++){
    		result*=i;
    	}
    %>
    
    
    数字<%= num %>的乘阶是: <%= result %>
    
    </body>
    </html>

    JSP注释

    在jsp元素中,可以使用java的标准注释,也可以使用注释标<%-- 我是注释 –%>

    JSP方法

    所有<% %>标签都会被原封不动的翻译为servlet中doGet这样的方法中,在方法中是无法定义方法的。

    <%! %>标签,可以方便的定义自己的方法,它会被翻译在默认方法外。

    <%! 
    	private int x=0;
    	
    	public String getX(){
    		return x+"";
    	}
    %>
    
    <%
    	number=getX();
    %>
    
    数字<%= number %>

    JSP指令

    jsp指令用来声明JSP页面的一些属性等,例如编码方式,文档类型。。。格式 <%@ 指令 属性%>

        page指令

    用来声明jsp页面的属性。

    <%@ page language="java" contentType="text/html"; charset=utf-8 %>
    <%-- 多个属性用;分割 --%>
    
    
    <%-- 也可以这样写 ,一个page指令写一个属性 --%>
    <%@ page pageEncoding="UTF-8" %>
    <%@ page import="java.util.*" %>

    page指令的常见属性( jsp 2.1规范)

    属 性 名 称 取 值 范 围 描        述

    language

    java

    指明解释该jsp文件时采用的语言。一般为java,默认为java。

    extends

    任何类的全名

    指明编译该jsp文件时继承哪个类。jsp为servlet,因此当指明继承普通类时需要实现servlet的init、destroy等方法。

    import

    任何包名,类名

    引入包或类。与java中的import作用相同。一个import语句也可以引入多个类:
    <%@ page import=”java.util.List,java.util.ArrayList”%>
    jsp中,以下四个包里的类可以直接使用:
    java.lang.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.*

    session

    true , false

    指明该jsp是否内置Session对象。默认为true,存储Session对象

    autoFlush

    true , false

    是否运行缓存,默认为true,使用out.println()输出字符串,并不是立刻到达客户端,暂时存在缓存里,等待程序执行完毕或者out.flus(),字符才发送到客户端。

    buffer

    none 或者
    xx(数字)kb

    当autoFlush为true时,制定缓存大小。例如:
    <%@ page buffer=”10kb” %>

    isThreadSafe

    true , false

    是否线程安全。默认为false,如果为ture,则运行多个线程同时运行该jsp程序,否则只一个线程运行,其它线程等待。

    isErrorPage

    true , false

    指定本jsp是否为错误处理页面。默认为false,如果为true,内置了一个Exception对象exception,可以直接使用

    errorPage

    某个JSP页面的
    相对路径

    指明一个错误显示页面。如果该jsp抛出了一个未被捕捉的异常,则转到指定的页面。指定的页面通常isErrorPage为true。

    contentType

    有效地文档类型

    客户端浏览器根据该属性判断文档类型。例如:
    HTML : text/html
    纯文本格式 : text/plain
    JPG : image/jpeg
    GIF : image/gif
    WORD : application/msword

    info

    任意字符串

    指明jsp信息。该信息可以通过 Servlet.getServletInfo()方法得到。

    trimDirective
    Whitespaces

    true , false

    是否去掉指令前后的空白字符。默认为false。
    输出XML时,尽量设置为true吧。

     

        include指令

    包含页面。<%@ include file=”URL” %>

    <%-- url是相对路径 --%>
    <%@ include file="head.jsp" %>
    
    <body>
    </body>
    
    <%@ include file="foot.jsp" %>

    这里的include是静态引入,也就是说,tomcat会把引入的jsp编译为一个class,最后运行的事整合后的servlet。

                被引入的文件必须遵循JSP语法。

                被引入的文件可以使用任意的扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见明知意,JSP规范建议使用.jspf(JSP fragments)作为静态引入文件的扩展名。

                由于使用include指令将会涉及到2个JSP页面,并会把2个JSP翻译成一个servlet,所以这2个JSP页面的指令不能冲突(除了pageEncoding和导包除外)。

    JSP标签

    JSP Actions,有人叫标签,有人叫动作,有人叫行为,都是一回事。JSP标签就是对常用的JSP功能的抽象的封装,优点就是代码少,方便维护,代码美观。JSP标签有内置的标准标签,也可以自定义标签。这里只说说默认的标签。

        <jsp:include />标签

    不同于<%@ include %>,<jsp:include />属于动态包含,也就是不编译为一个class,而是在运行时分别获取运行结果然后包含,等同于页面包含了html,这段html这样跳转过去 request.getRequestDispatcher(“URL”).forward(request,response)

    //flush指明,在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。
    <jsp:include flush="true" page="/head.jsp"></jsp:include>
    这里是正文
    <jsp:include flush="true" page="/foot.jsp"></jsp:include>

        <jsp:forward />标签
            <jsp:param />标签

    页面跳转,等同于 request.getRequestDispatcher(“URL”).forward(request,response) 。<jsp:param />是转发时携带的地址栏参数。

    注意的是,转发前不能向浏览器输出内容,否则抛出IllegalStateException

    <jsp:forward page="/login.jsp" >
    	<jsp:param name="username" value="name"/>
    	<jsp:param name="password" value="passwd"/>
    </jsp:forward>

        <jsp:useBean />标签
           
    <jsp:setProperty />标签
            <jsp:getProperty />标签

    顾名思义,使用javaBean。格式是这样的:
    <jsp:useBean id=”beanId” class=”className” scope=”Value” />

    id就是javaBean的变量名,class是完整类名,scope是作用域,有四个作用域:
    page    该jsp内有效
    request   当前request内有效
    session  当前会话(用户)有效
    application   web应用内有效


    setProperty就是设置属性
    <jsp:setProperty name=”beanId” property=”p" value=”v” />  beanId就是以声明的bean的变量名,property为属性,value是值。
    <jsp:setProperty name=”beanId” property=”*” />  这里,是把request提交内容填充至bean,前提是这个bean必须有对应的属性。

    getProperty是获取属性值
    <jsp:getProperty name=”beanId” property=”p" value=”v” /> 这个就不解释了。

    JSP九大隐藏对象

    out                --javax.servlet.jsp.JspWriter
    request          --javax.servlet.ServletRequest
    response        --javax.servlet.ServletResponse
    config           --javax.servlet.ServletConfig
    session          --javax.servlet.http.HttpSession
    application     --javax.servlet.ServletContext
    page              --javax.servlet.jsp.HttpJspPage  这个就等于 this
    pageContext   --javax.servlet.jsp.PageContext  这个很重要,它代表了jsp的运行环境,可以获得这上面所有对象
    exception       --java.lang.Exception

    JSP配置

    <servlet>
    	<!-- 转换后的servlet的访问名称 -->
    	<servlet-name>SimpleJspServlet</servlet-name>
    	<!-- jsp文件 -->
    	<jsp-file>/jsp/simple.jsp</jsp-file>
    </servlet>
    
    
    <!-- jsp映射 -->
    <servlet-mapping>
    	<!-- 需要映射的jsp servlet -->
    	<servlet-name>SimpleJspServlet</servlet-name>
    	<!-- 映射地址 -->
    	<url-pattern>/xxx/yyy.html</url-pattern>
    </servlet-mapping>
  • 相关阅读:
    Atitit sumdoc t5 final file list \sumdoc t5 final\sumdoc t511 \sumdoc t5 final\sumdoc t511.zip \sum
    上课流程法如何上好第一节课(1) 目录 1. 目录 1 1.1. 销售自己 1 1.2. 销售课程 1 1.3. 学习方法 1 1.4. 制定规章 2 2. 销售自己自我介绍 2 2.1.
    Atitit 重复文件清理工具 按照文件名 目录 1. 原理, 1 1.1. If base filex exist dele other files 1 1.2. Get getStartIdex
    Atitit sumdoc index 2019 v6 t56 .docx Atitit sumdoc index s99 目录 1. Zip ver 1 1.1. C:\Users\Adminis
    Atitit lucence es solr的各种query 与sql运算符的对比 目录 1.1. 等于运算 TermQuery 1 1.2. 范围运算 1 1.3. 大小运算 1 1.4. Wi
    Atitit 程序设计概论 艾提拉著作 目录 1. 界面ui设计 1 2. 编程语言部分 1 3. 面向对象的程序设计 1 4. 算法章节 数据结构 1 5. 第21章 标准库 2 5.1. 文件i
    Atitit 命令行执行sql 跨语言 目录 1.1. 无需输入密码,那就不要p参数即可 1 1.2. 4.使用mysql命令执行 1 1.3. 5.mysql命令执行sql,并将查询结果保存到
    Atitit java播放 wav MIXER 混响器编程 目录 1.1. MIXER 混响器编程 1 1.2. 得到系统中一共有多少个混音器设备: 1 1.3. 接口摘要 1 1.4. 调节音量
    Atitit object 和class的理解 目录 1.1. 发现很多Object的方法都是相同的,他们被重复地放在一个个对象当中,太浪费了。 1 1.2. 那我们怎么把这些Object给创建起来
    Atitit 数据库的历史与未来 目录 1.1. 两个对于数据库强需求的行业。电信 金融 1 1.2. 艾提拉分析 对数据库强需求行业金融 1 2. 数据库历史 2 2.1. ,上个世纪50,6
  • 原文地址:https://www.cnblogs.com/hangxin1940/p/2076355.html
Copyright © 2011-2022 走看看