Jsp讲义笔记

 

JSP
------------------------------

Module 1:  Introduction to JavaServer Pages

 *  Compare Servlets, and JSP
    Benefits of Java Server Pages 

 *  Use XXX.jsp  and  xxxx.html:  usage is same

 *  Run (Execute) XXX.jsp:  Jsp  is servlet
          translate XXX.jsp  to ->  XXXXX.java (Servlet)  -> compile to  XXXXX.class :  all done by Server
   
     -> Tomcat5.0
           ->webapps

           ->work ( only for reference, please don't change anything)
                ->Catalina
                        -> localhost
                                  ->yourWebApp
                                           ->org->apache->jsp
                                                            -> XXXXX.java
                                                            -> XXXXX.class
----------------------------------------------------------------------------------------------------------

Module 2:  Creating, Deploying and Executing a JSP

*  Create JSP
      write XXX.jsp

    * JSP element syntax
   
    jsp语法:
   
       1.JSP代码注释
         使用 // 对单行java代码进行注释
         使用 /*  */方式对多行java代码注释
         使用 /**  */方式对多行java代码进行注释,文档型的(jsp中不常用)
         使用<%--  --%>对多行代码进行注释
         使用<!--  -->对多行HTML代码进行注释
         
       2. Directives: 指令 <%@      %>
         <1>* page directive:    
      <%@ page contentType="text/html;charset=utf-8"   %>
                               
   or  <jsp:directive.page contentType="text/html"  />

        <2>* include directive  <%@ include file="banner.html" %>
                                or <jsp:directive.include file="banner.html" />
                               
        <3>* taglib directive  标记库指令<%@ taglib uri=""  prefix="" %>

       3. Declarations:声明  <%!      %>  declare  member variables, or methods声明成员变量,或方法
                                       注意成员变量的声明后有 ;

              declare  member variables:  <%!   String greetingStr="Hello, World!";    %>
                  or  <jsp:declaration> String greetingStr="Hello, World!"; </jsp:declaration>
  
              declare  methods:
                          <%!
                               public void print(){                              
                                    greetingStr="welcome";
                                    int i=0;
                               }
                          %>

       4. Expressions:表达式  <%=        %>   for display, send to client(browser)输出给客户端
                           <%= greetingStr %>                       注意无 ;
                  or       <jsp:expression> greetingStr</jsp:expression>


       5. Scriplet:脚本     <%         %>
                        <%    greetingStr+=" Best wishes to you! ";     %>
                  or    <jsp:scriptlet>   greetingStr+=" Best wishes to you!";   </jsp:scriptlet>

                         <%  String str="ok";    %>     //local variable声明局域变量
                
       6. Action:动作   <jsp:forward  page="/welcome.jsp"  />  
                    <jsp:include  page="/welcome.jsp"  />
                    

*  Deploy JSP
     -> yourWebApp
                -> WEB-INF
                        -> web.xml
                        -> classes
                            
                -> XXX.jsp
                -> xxx.html
                -> jspDir
                       -> xxxx.jsp

Review:

1. jsp:  html, servlet

2. Create JSP
      write XXX.jsp

       <%@   %>   指令(page  include  taglib)
       <%!   %>   声明(声明变量和方法,全局的)  
       <%=   %>   表达式 (做java的输出)
       <%    %>   脚本
       <jsp:forward    />  动作(跳转)
       <jsp:include    />  动作(引入页面)

3. Deploy JSP :   position same as XXX.HTML

----------------------------------------------------------------------------------------------------

Module 3  Scripting
 
1. Directives:  <%@      %>
     * page directive:
        <%@ page  language="java" import="packageName.className"
                  session="false|true"  autoFlush="false|true"  isThreadSafe="false|true"  
                  info="text"  errorPage="relativeURL"  contentType="mimeType;charset=characterSET"
                  isErrorPage="true|false"  pageEncoding="pginfo"  %>
                               

     * include directive  <%@ include file="banner.jsp" %>
                                or <jsp:directive.include file="banner.jsp" />
----------------------------------------------------------------------------------------------------
2.  Declarations:  <%!      %>
       * Variable declaration:member variable, not local variable
              <%! int i ,j; 
                  String str="hello";
               %>
       * Method declaration
            <%! public String f(int i) {
                     if (i<3) return(“...”);
                              ...
                }
            %>
----------------------------------------------------------------------------------------------------
3. Expressions:   <%=      %>
        Example:  <%= (new java.util.Date()).toLocaleString() %>
                  <%= str %>

----------------------------------------------------------------------------------------------------

4. Scriplet:   <%       %> :  Java programming code fragments
       Example: <%  i=30;
                    j=60;
                    int x=i+j;
                %>

----------------------------------------------------------------------------------------------------
5. Action: <jsp:forward   page=" URL "  />      <jsp:include  page=" URL"   />
       Examples:   <jsp:forward  page="/result.jsp"/>
                   <jsp:include  page="header.jsp" />
       

----------------------------------------------------------------------------------------------------
6. Comment : * <!--    Comment content               -->
             * <%--    this is a comment ...        --%>
            

numberGuess.jsp: 
    通过Session获得猜测的次数以及随机数的值, 若没有则设置新值,

    String guess = request.getParameter("guess");
1.  如果用户请求从http://localhost:8080/jspWebApp/numberGuess.jsp 进入
  
        guess == null
        显示 Form

2.   如果用户请求从http://localhost:8080/jspWebApp/numberGuess.jsp?guess=xxxx进入,
      或通过FORM进入, guess != null, 但 如果用户不输入, guess.equals("") 

      guess!= null       
     
      if (猜中){ //随机数与输入的数比较
                     1>  显示 祝贺
                     2>  显示 经过几次猜测后猜中,设置新值
                      显示 Form
           }else {
                      显示 Form
                      if(输入 >随机数) {
                              显示: try lower
                         }else {   
                              显示: try higher
                         }
                      Session  设置猜测的次数的新值
           }
 


 !!!!!!! Different :   String s=null;  and   String ss="";
 
 
 
 ==============================================================================================
 Exception    ErrorPage
 
 HTTP常见错误代码
 
 401 验证出错
 404 路径错误 资源不存在错误
 405 访问资源不允许--一般是servlet中,例如请求方式post,而我只写了doGet()方法,出现405错误
 500 服务器端运行错误(语法异常等等)
 
 
 异常页面
 
关于JSP中的错误页面处理
通常JSP 在执行时,在两个阶段下会发生错误。
            JSP 网页 → Servlet 类
            Servlet 类处理每一个请求时
    在第一阶段时,产生的错误我们称为Translation Time Processing Errors;在第二阶段时,产生的错误我们称为Client Request Time Processing Errors。
    接下来我们针对这两个阶段产生错误的原因和处理方法,进行介绍。

1、 Translation Time Processing Errors
    Translation Time Processing Errors 产生的主要原因:我们在撰写JSP时的语法有错误,导
致JSP Container 无法将JSP 网页编译成Servlet 类文件( .class),例如:500 Internal Server
Error,500 是指HTTP 的错误状态码,因此是Server Error。
通常产生这种错误时,可能是JSP 的语法有错误,或是JSP Container 在一开始安装、设定时,
有不适当的情形发生。解决的方法就是再一次检查程序是否有写错的,不然也有可能是JSP
Container 的bug。

2、 Client Request Time Processing Errors
    Client Request Time Processing Errors 错误的发生,往往不是语法错误,而可能是逻辑上的错误,简单地说,你写一个计算除法的程序,当用户输入的分母为零时,
    程序会发生错误并抛出异常(Exception),交由异常处理(Exception Handling)机制做适当的处理。对于这种错误的处理,我们通常会交给errorPage 去处理。下面举个例子:


使用errorPage 的范例程序 :ErrorPage.jsp

<%@ page contentType="text/html;charset=GB2312" errorPage="Error.jsp" %> //设置Error.jsp页为本页的错误处理页
<html>
 <head>
  <title>CH4 - ErrorPage.jsp</title>
 </head>
 <body>
  <h2>errorPage 的范例程序</h2>
  <%!
   private double toDouble(String value)
   {
    return(Double.valueOf(value).doubleValue());
   }
  %>
  <%
   double num1 = toDouble(request.getParameter("num1"));
   double num2 = toDouble(request.getParameter("num2"));
  %>
  您传入的两个数字为:<%= num1 %> 和 <%= num2 %><br>
  两数相加为 <%= (num1+num2) %>
 </body>
</html>
   
ErrorPage.jsp 程序中,我们使用page 指令中的errorPage 属性,告诉JSP Container,如果
在程序中有错误产生时,会自动交给Error.jsp 处理。

Error.jsp

<%@ page contentType="text/html;charset=GB2312" isErrorPage="true" %>   //设置该页为错误处理页
<%@ page import="java.io.PrintWriter" %>
<html>
 <head>
  <title>CH4 - Error.jsp</title>
 </head>
 <body>
  <h2>errorPage 的范例程序</h2>
  <p>ErrorPage.jsp 错误产生:<I><%= exception %></I></p><br>
  <pre>
   问题如下:<% exception.printStackTrace(new PrintWriter(out)); %> //输出错误的原因
  </pre>
 </body>
</html>

Error.jsp 主要处理ErrorPage.jsp 所产生的错误,所以在ErrorPage.jsp 中page 指令的属性errorPage设为Error.jsp,
因此,若ErrorPage.jsp有错误发生时,会自动转到Error.jsp来处理。
Error.jsp 必须设定page 指令的属性isErrorPage为true,因为Error.jsp是专门用来处理错误的网页。

 
 
 
===============================================================================================
<%@ include >与 jsp:Include的区别
两者都可以用于包含静态内容或者动态内容,差别在于,前者是静态包含,也就是在生成servlet之前就被包含进来了,
生成的是单个文件,不会为被包含者生成单独的servlet(假如被包含的是动态的);

后者是动态包含,也就是说生成servlet的时候只是添加一个引用,并不真正将内容包含进来,内容是在运行时才被包含进来的,
容器会为被包含的文件生成独立的servlet的(假如包含的是动态的)。

所以,前者常用于包含固定不变的,多个页面共用的内容片段,后者则用于经常变化的内容片段,无论是否被多个页面共用

 
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值