美文网首页
JavaWeb基础之JSP

JavaWeb基础之JSP

作者: 在error边缘疯狂试探 | 来源:发表于2020-04-11 06:26 被阅读0次

    什么是JSP?

    • Java Server Page:java服务器页面,也和servlet一样用于开发动态web技术。
    • 和HTML的区别:HTML只提供静态的数据,JSP可以嵌入Java代码,为用户提供动态数据。

    JSP原理

    • 浏览器向服务器发送请求,不论访问什么资源,其实都是在访问Servlet!
      • JSP在编译过后,最终还是变成了java类,JSP本质上就是Servlet,那个java类中就继承了HttpServlet!
    • JSP编译后的java类中有一些方法和内置对象(只有访问了页面才会产生对应的class文件)
      //jsp中存在的一些方法
      public void _jspinit(){
      }
      public void _jspDestory(){
      }
      //JSP服务,每次走servlet时都会执行这个方法,JSP写的所有的内容都在这个方法内
      public void _jspService(HttpServletRequest request,HttpServletResponse response) {
      }
      
      //Jsp中存在的一些内置对象,俗称jsp 9大内置对象
      final javax.servlet.jsp.PageContext pageContext ;      //页面上下文
      javax.servlet.http.HttpSession session =null;          //session
      final javax.servlet.ServletContext application;        //applicationContext,本质就是之前学的ServletContext
      final javax.servlet.ServletConfig config;              //config
      javax.servlet.jsp.JspWriter out =null;                 //out
      final java.lang.Object page=this;                     //当前页
      HttpServletRequest request;                          //请求
      HttpServletResponse response;                        // 响应
       javax.lang.Throwable  exception ;                    //异常
      

    Tips:以上的9大对象可以直接在JSP中使用。

    • 在JSP中写的内容 (产生的java文件中会显示如下):
      • 如果写的是java代码,就会原封不动的输出。
      • 如果写的是HTML代码,则会转换为out.write("<h1>test</h1>\n")

    JSP导入的依赖

    <dependency>
            <!--Servlet 依赖-->
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
            </dependency>
    <dependency>
    <!--    jsp的依赖-->
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.0</version>
            </dependency>
            <dependency>
    <!--    jstl表达式的依赖-->
                <groupId>javax.servlet.jsp.jstl</groupId>
                <artifactId>jstl-api</artifactId>
                <version>1.2</version>
            </dependency>
       <dependency>
    <!--    standard标签库-->
                <groupId>taglibs</groupId>
                <artifactId>standard</artifactId>
                <version>1.1.2</version>
            </dependency>
    
    

    JSP基础语法

    • JSP中利用<% java代码 %>符号写java代码
    • JSP的注释不会显示在客户端,HTML的注释会显示

    JSP指令

    • 可以在web.xml文件中配置500错误页面,404页面等
       <error-page>
        <error-code>404</error-code>
        <location>/errorPage/404.jsp</location><!--这里最前面必须加' / '-->
      </error-page>
      
         <error-page>
        <error-code>500</error-code>
        <location>/errorPage/500.jsp</location><!--这里最前面必须加' / '-->
      </error-page>
      
    • 也可以在jsp文件中头部使用<%@ page errorPage="errorPage/500.jsp" %>
    • 提取公共页面可以用<jsp:include page="/common/header.jsp"/>

    内置对象

    • 存储数据的区别:
    <%
        pageContext.setAttribute("1","1");//保存的数据只在当前页有效
        request.setAttribute("3","3");//保存的数据在一次请求中有效,请求转发会携带这个数据(URL不会变)
        session.setAttribute("2","2");//保存的数据在一次会话中有效,从浏览器打开,到关闭
        application.setAttribute("4","4");//保存的数据在服务器中有效,从打开服务器到关闭服务器
        pageContext.getAttribute("1");//获得保存的数据
    %>
    

    Tips:JVM双亲委派机制,当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。

    • 双亲委派机制的作用:
      • 1、防止重复加载同一个.class。通过委托去向上面问一问,加载过了,就不用再加载一遍。保证数据安全。
      • 2、保证核心.class不能被篡改。通过委托方式,不会去篡改核心.class,即使篡改也不会去加载,即使加载也不会是同一个.class对象了。不同的加载器加载同一个.class也不是同一个Class对象。这样保证了Class执行安全(比如,自己创建一个包为java.lang.String,里面写一些方法,结果java根本就不会执行这个类)。

    JSP标签、JSTL标签、EL表达式

    • EL表达式:${ }
      • 获取参数
      • 执行运算
      • 获得web开发常用对象(很少用)
    • JSP标签:
    <%--jsp实现转发,并且携带参数--%>
    <jsp:forward page="/jsptag2.jsp">
    <jsp:param name="name" value="cwx">
    </jsp:forward>
    
    • JSTL表达式
      JSTL标签库的使用就是为了弥补HTML标签的不足,它自定义了许多标签,科供我们使用,标签的功能和java代码一样。
      • 核心标签(常用)

    使用前先引入头文件<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    jstl.png

    MVC三层架构

    • Model层:实体类(pojo)创建数据、管理数据,和数据库交互。
    • View层:视图层,JSP展示数据,提供操作的请求。
    • Controller层:控制层,Servlet接受用户的请求,实现业务的逻辑方法,响应给客户端内容。

    相关文章

      网友评论

          本文标题:JavaWeb基础之JSP

          本文链接:https://www.haomeiwen.com/subject/wwzsmhtx.html