zoukankan      html  css  js  c++  java
  • JavaWeb之 JSP基础

    什么是JSP

    JSP的全称是java server page, java服务页面。是提供java服务的页面~

    那么和Servlet有什么区别呢?JSP的页面既可以写java代码~也可以写html代码哦!!

    JSP的特点

    JSP的作用:JSP是主要用来开发动态资源的技术~

    那么JSP怎么运行呢?我这里交给Tomcat服务器运行了~

     Jsp运行的目录

    %tomcat%/work是tomcat服务器运行jsp页面的临时目录。

     

    那么我们来看看JSP的原理,JSP是怎么运行的~

    我们用浏览器输入: http://localhost:8080/day12/01.hello.jsp

     

    第一次访问时:               找到文件-翻译-编译-构造实例-调用方法

    1)在day12web应用下找到01.hello.jsp文件

    2tomcat服务器将01.hello.jsp文件翻译成java源文件。例如 01.hello_jsp.java

    3tomcat服务器将java源码编译成class字节码, 例如 01.hello_jsp.class

    4tomcat服务器构造01.hello_jsp类的实例,调用类中的方法。

     

    n次访问时:                              已经存在了jsp文件对应的class对象的一个实例,直接用该实例调用方法

    tomcat服务器不再翻译和编译jsp文件

     

    注意:                   jsp文件被修改,或jsp临时文件被删除,服务器都会重新翻译和编译jsp文件。

    1)当修改了jsp文件时的第一次访问,重新再翻译和编译jsp文件。

    2)当删除%tomcat%/workjsp临时文件的第一次访问,重新再翻译和编译jsp文件。

     Jsp的原理

    问题: Jsp文件翻译成的java源文件是什么类??

    public final class hello extends HttpJspBase

    public abstract class org.apache.jasper.runtime.HttpJspBase extends HttpServlet implements HttpJspPage {  

        继承自HttpServlet!!!  

    结论: Jsp就是一个servlet 

    注意

     1) Jsp文件的html代码,通过out.writer()方法写出到浏览器。

     2) Jsp文件的java代码,直接拷贝到java源文件中,通过_jspService()方法执行。

    那么我们下面来体验一下JSP吧~

     

    jsp的体验

    需求: 用jsp向浏览器输出当前时间。下面是核心代码:

     

      <body>
               <h1><font color='red'>欢迎来到此页面</font></h1>
               <%
                   SimpleDateFormat simaple = new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss");
                   String date = simaple.format(new Date());
                   request.setAttribute("aa", "123");
                %>            
               当前的时间是:<%=date %>
               <%
                   String ip = request.getRemoteAddr();
                   out.write(ip);           
                %>                   
      </body>

     

    然后用浏览器直接访问这个jsp,就能看到以下的效果了~

    体验完JSP,是不是很自己写一个体验一下呢?下面我们就来学习JSP的语法吧!

    JSP的语法

    Jsp模板 

    Jsp模块:就是jsp页面中的html代码

     

    Jsp表达式         

    例如:<%=x%>   表达式<%=x*y+k-n%>

    这样写的表达式,翻译后实质上是用过out.print()来输出。

    格式: <%=变量或表达式计算%>

    作用: 用于向浏览器输出变量的值或表达式计算的结果

    注意:

    1)表达式的原理就是通过out.print()方法向浏览器输出内容。

    2)表达式后面不能带分号。

     

    Jsp脚本   

    也就是html中的java代码

    格式:<%  java代码  %>

    作用: 执行java代码

    注意:

    1)可以写多行java代码

    2)原理是把脚本代码原封不动拷贝到_jspService方法中执行。

    3jsp脚本可以穿插html代码结合使用

     

    Jsp声明  

    声明里面的 变量和方法 是 成员变量 和成员方法

    格式: <%!  %>

    作用: 声明jsp的变量和方法

    注意:

    1Jsp脚本声明的变量是局部变量,Jsp声明的变量是成员变量。

    2Jsp脚本中不能声明方法的,Jsp声明的方法是成员方法。

    3jsp声明的方法不能和翻译成的java类的方法重复。

     

     Jsp注释 

    jsp注释只会出现在jsp文件中,不会被翻译到java文件里。

    格式: <%--  jsp注释 --%>

    注意:

    html的注释会翻译到java源代码中,会被执行的。

    jsp的注释不会翻译到java源代码中,不会被执行的。

     

    看完前面的介绍那么久写一段代码来体现下吧~

     

      <body>
              <%--模板 --%>        
               <h1><font color='red'>欢迎来到此页面</font></h1>
               
               <%--脚本 --%>>        
               <%                                                    
                   SimpleDateFormat simaple = new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss");
                   String date = simaple.format(new Date());
                   request.setAttribute("aa", "123");
                %>            
                
                <%--表达式 --%>>
               当前的时间是:<%=date %>
               <%
                   String ip = request.getRemoteAddr();
                   out.write(ip);
                   out.write(s);          
                %>
                
                <%--声明--%>
                <%!
                   String s = "hello";
                %>
                                   
      </body>

     

    然后看看输出的结果把~:

    上述就是JSP的基本语法,除了基本语法,我们还需要学习JSP的三大指令。

     

     

    Jsp大指令

     一)taglib指令(这个我们以后再说)

        主要用于导入jsp标签库

     

    二)include指令

    include指令  ----把其它页面一并翻译到java文件里,这个页面不需要具备html,body,head标签,因为它会被翻译到jsp文件对应的htmlbody

    作用: 主要用于包含其他页面

    格式:<%@inculde  file="被包含的页面"%>

    注意:

    1include指令原理: 包含与被包含的页面内容先合并翻译到一个java文件中,再编译运行。(先合并再翻译),这种包含叫静态包含。(源码包含)

    2)如果使用include指令包含,那么被包含的页面不需要使用全局的html标签(例如,html,body,head

     

    page指令

    作用: 主要用于告诉服务器如何翻译jsp文件,主要有下面几种设置:

     

    <%@ page 
    
      language="java"    --告诉服务器用什么语言翻译此jsp页面
    
      import="java.util.*" --导包,在jsp页面编写java需要手动导包。除了java.lang包以为都需要导入。多个包之间用逗号分隔

       buffer="8kb"    --jsp页面缓冲区大小

    
    

       session="true"  -- 是否开启session功能

    
    

        isELIgnored="false"  --是否忽略EL表达式

    
    
    关于jsp文件的编码:
    
      pageEncoding="utf-8"    --告诉服务器用什么编码翻译此jsp文件
    
      contentType="text/html; charset=utf-8"  --服务器发送给浏览器数据的编码
    
    
    注意:
    
    1)contentType属性的编码看pageEncoding编码
    
    2)在开发工具中,保存jsp文件的编码自动根据pageEncoding的编码改变。
    
    
    结论:
    
    1)在开发工具中,jsp文件的编码问题只需要设置pageEncoding即可!
    
    2)如果用记事本开发jsp文件,要注意保存jsp文件的编码。
    
     
    
    异常相关的:
    
     errorPage=""   -指定错误处理页面,当页面出现错就会转跳到错误页面。
    
     isErrorPage=""  --指定当前页面是否是错误处理页面true:是,那么可以使用exception的内置对象,使用它的一些方法。
    
    false:不是。不可以使用exception对象。
    
     
    
    全局异常处理:在web.xml中加上配置

    <!-- 配置全局异常 -->
        <error-page>
            <error-code>500</error-code>
            <location>/common/500.jsp</location>   505错误都会转跳到这个页面
        </error-page>
        <error-page>
            <error-code>404</error-code>
            <location>/common/404.html</location>    404错误都会转跳到这个页面
    
        </error-page>
    
    

     

     

  • 相关阅读:
    C++003类的析构函数
    C++002类的构造函数
    C++001类
    simulink与控制系统仿真01自动控制原理简介
    telnet
    WEB
    Python_包
    Python_装饰器
    Pycharm+Tensorflow安装和使用出现的问题集合
    HTML+CSS综合使用
  • 原文地址:https://www.cnblogs.com/vmax-tam/p/4132019.html
Copyright © 2011-2022 走看看