Day 06 JSP

来源:互联网 发布:java图的深度优先遍历 编辑:程序博客网 时间:2024/05/16 07:41

一. JSP基本语法

   1.JSP模板元素:JSP页面中的静态HTML内容      

   2.JSP表达式(expression):提供了将一个JAVA变量表达式的计算结果输出到客户端的简化方式,它将要输出的变量或表达式直接封装在<%=  和 %>之中

      例:

     <%           Date date=new Date();          out.print(date);       %>
       </br></br>
      <%=date%>       //等同于out.print(date)
       向浏览器输出变量或者表达式   <%=   %>    

    3.JSP脚本片段(scriptlet):是指在<%  和  %>之中的一条或多条JAVA程序代码

        多个脚本片段之间可以相互访问

  

      <%         String ageStr=request.getParameter("age");         Integer age=Integer.parseInt(ageStr);          if(age>=18){       %>      成人
         <%           }else{          %>  未成人          <%            }          %>
       可以在JAVA代码中穿插HTML代码

  等同于:

    <%        String ageStr=request.getParameter("age");        Integer age=Integer.parseInt(ageStr);           if(age>=18){   out.print("成人");         }else{    out.print("未成人");         }     %>


4.JSP声明:JSP声明将JAVA代码封装在<% 和 %>之中,它里面的代码被插入进Servlet的_jspServlet方法的外面(几乎不用,知道即可)

     <%           voiod test(){}     %>

5.JSP注释:<%--     --%>

   HTML注释:<!--       -->

   区别:JSP注释可以阻止Java代码的执行

         例:

                   

                        不可输出



                        

                          可输出



二.JSP指令

他们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分

  • 语法格式:<%  指令 属性名=属性值 %>(  举例:<%@ page contentType="text/html;charset=gb2312"%>
  • 注意:属性名部分是大小写敏感的
  • 在目前的JSP 2.0中,定义了page、include和taglib这三种指令,每种指令中又都定义了一些各自的属性。
  •  如果要在一个JSP页面中设置同一条指令的多个属性,可以使用多条指令语句单独设置每个属性,也可以使用同一条指令语句设置该指令的多个属性。 

第一种方式:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.Date"%>


第二种方式:
<%@ page contentType="text/html;charset=gb2312" import="java.util.Date"%> 

1.Page指令

1) 定义JSP页面的各种属性,Page指令最好放到整个JSP页面的起始位置

2)JSP 2.0规范中定义的page指令的完整语法:

<%@ page 
[ language="java" ] 


[ extends="package.class" ] 


[ import="{package.class | package.*}, ..." ] :指定当前JSP页面对应的Servlet需要导入的类


[ session="true | false" ]     :页面不能再使用session


[ buffer="none | 8kb | sizekb" ] 


[ autoFlush="true | false" ] 


[ isThreadSafe="true | false" ] 


[ info="text" ] 


[ errorPage="relative_url" ] :如出现错误跳转到指定响应页面(响应error.jsp时,jsp引擎使用的请求的转发的方式)


[ isErrorPage="true | false" ] :在指定的错误页面中设置此值为true后即可使用exception这个隐含对象(可知道错误原因),一般不建议能够直接访问


     例:

     


(也可在web.xml文件配置错误页面)

  例1:<error-code>500</error-page>   错误编码

           <location>/WEB-INF/error.jsp</location>  响应页面的位置

  例2:

          <error-code>java.lang.ArithmeticException</error-page>   指定异常的类型

          <location>/WEB-INF/error.jsp</location>   响应页面的位置


[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ] :指定当前JSP的响应类型/实际调用的是response.setContextType("
text/html;charset=utf8),通常情况下,JSP页面取值均为此.


[ pageEncoding="characterSet | ISO-8859-1" ] :通常和ontentType下的charset一致


[ isELIgnored="true | false" ]:指定当前JSP页面是否可以使用EL表达式,通常取值为True


2.include指令

  • include指令用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,这种在源文件级别进行引入的方式称之为静态引入,当前JSP页面与静态引入的页面紧密结合为一个Servlet(即合并为一个Servlet文件)

  • 语法:
<%@ include file="relativeURL"%>
其中的file属性用于指定被引入文件的相对路径

  • file属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件

       例:(静态包含)

a.jsp

b.jsp


结果:


三.JSP标签

1.概念:

  • JSP还提供了一种称之为Action的元素,在JSP页面中使用Action元素可以完成各种通用的JSP页面功能,也可以实现一些处理复杂业务逻辑的专用功能。 
  • Action元素采用XML元素的语法格式,即每个Action元素在JSP页面中都以XML标签的形式出现。
  • JSP规范中定义了一些标准的Action元素,这些元素的标签名都以jsp作为前缀,并且全部采用小写,例如,<jsp:include>、<jsp:forward>等等。 


2.<jsp:include>标签:

用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。

  1)语法:
<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
 
         page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
         flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。  

        例:<jsp:include page="b.jsp"></jsp:include>

  2) <jsp:include>标签与include指令的比较 

<jsp:include>标签:  两个.jsp生成两个.class文件

 include指令:两个.jsp生成一个Servlet文件


3.<jsp:forward>标签:用于把请求转发给另外一个资源(相当于一个转发)。
1)语法:
<jsp:forward page="relativeURL | <%=expression%>" /> 

例:<jsp:forwaard page="d.jsp"></jsp:forward>

       相当于

<%

       request.getRequestDispatcher(d.jsp).forward(request,response);

%>

2)使用jsp:forwaard :可使用jsp.param子标签向d.jsp传入一些参数,同样jsp:include也可以使用jsp.param子标签
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。

4.当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给的资源是一个能动态执行的程序时,例如Servlet和JSP页面,那么,还可以使用<jsp:param>标签向这个程序传递参数信息。
语法1:
<jsp:include page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
语法2:
<jsp:forward page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。 


四.关于中文乱码(默认参数传送过程中为ISO8859-1)

1.在JSP页面输入中文,请求页面后不出现乱码:保证<%contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8"%>,charset和pageEncoding的编码一致,且都支持中文,通常取值为UTF8,还需保证浏览器的显示的字符编码也和请求的编码一致

2.获取中文参数值: 

1) 对于POST请求:只要在获取请求信息之前调用request.setCharacterEncoding("utf-8")即可

2)对于GET请求:上面方式对GET无效,可以通过修改Tomcat的server.xml文件的方式



0 0