Java Web-JSP学习

概念

Java Server Pages:Java服务器端页面。可以在其中直接定义HTML标签,也可以在其中直接定义java代码

关于JSP和JAVASCRIPT的区别,这里有一篇答案写的不错:

来源: https://zhidao.baidu.com/question/82932679.html

  1. Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. JSP是JAVA SERVER PAGE的首字母缩写,顾名思义,是JAVA的服务端页面,其动态语法部分完全是JAVA规范。JSP是和ASP,PHP一样的服务器端语言,主要用来制作网站后台的技术(但现在一般不使用了,2014年起基本都开始使用模板引擎技术如velocity 等)。
  3. JAVASCRIPT从其名称含义是JAVA脚本,是在浏览器中运行的脚本语言,由于其大部分语法规范取自于JAVA语法规范,所以取名为JAVASCRIPT(其实和JAVA没多大关系,是由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript)。JAVASCRIPT是一门基于对象的弱类型脚本编程语言,主要用来制作网页前台的技术.并且是现在比较热门的AJAX技术的核心。

JSP是用来简化web编写的:实现“主要写HTML,动态部分用java直接插入”的效果

原理

当浏览器请求一个jsp页面后发生了什么:

  1. 服务器解析请求消息,去找是否有该资源。如果没有直接报404
  2. 将jsp资源转换为.java文件(其实就是转换为了一个Servlet)
  3. 编译.java文件,生成.class字节码文件
  4. 由字节码文件提供访问。

实际上,JSP本质上就是一种Servlet:

由上图可知,HttpJspBase继承了HttpServlet

JSP转换后的java类中也是通过write方法将HTML语句输出的

JSP脚本

概念

JSP脚本是JSP定义java代码的方式

只有定义在一定的区域内的java代码才会被当成java代码,区域外面的都当做HTML元素处理

分类

  1. <% 代码 %>:定义的java代码在service方法中。service方法中可以定义什么,这里就能写什么。是最常用的类型
  2. <%! 代码 %>:java代码在类的成员位置,所以可以定义成员变量与成员方法
  3. <%= 代码 %>:将java变量的值输出到页面上。例如<%= i %>,就会把i的值输出到页面上,具体输出到哪里要看这个代码块放置在HTML的哪个部分。具体到java文件中,该输出语句是定义在service方法中的

JSP指令

概念

JSP指令是用来配置JSP页面、导入资源文件的

格式:

<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 %>

例如:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

分类

  1. page:用于配置JSP页面

    常见属性:

    • contentType:设置响应消息体的MIME类型和字符集,也会影响当前JSP页面的编码
    • pageEncoding:设置当前JSP页面的编码。高级IDE灰在设置了contentType属性之后自动改变当前JSP页面的编码(换言之,对于高级IDE编写时,是不需要设置这个属性的),但是对于一些低级的工具,需要我们加入这个属性来手动改变编码
    • language:支持的语言,其实只有java,但是还是要写上的
    • buffer:流的缓存区大小,默认8kb
    • import:导入包
    • errorPage:当前页面发生异常后自动跳转到的错误处理页面,这样做的好处是不将页面错误情况暴露给用户,避免源码泄露和访问不友好
    • isErrorPage:标识当前页面是否是错误处理页面。对于标识了的错误处理页面,就可以使用内置对象exeception来处理异常
  2. include:导入其他页面的资源

    例如,如果不同页面有重复的内容,我们可以使用include属性直接将另一个页面的资源导入进来,而不需要再将该资源复制粘贴过来。这样有助于资源的更新

    有了这样的技术,我们也可以实现将常用资源“组件化”,分别为每一个资源单独创建一个文件

    语法举例:<%@ include file="top.jsp" %>

  3. taglib:导入资源,例如最常见的用法是导入标签库

    什么是标签库?

    来源: https://www.runoob.com/jsp/jsp-jstl.html

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

    JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

    根据JSTL标签所提供的功能,可以将其分为5个类别。

    • 核心标签
    • 格式化标签
    • SQL 标签
    • XML 标签
    • JSTL 函数

    使用标签库需要导入jar包

    taglib语法举例:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    prefix:前缀,自定义,和import xxx as c意思一样。也有约定俗成的用法,例如上面的JSTL的core库,约定俗成的前缀为c

    导入了之后,我们就可以使用<c:来输入使用JSTL下的标签了

JSP注释

  1. HTML注释:<!-- -->,只能注释HTML部分。使用这种注释,HTML数据依然会被发送到浏览器,只是不会被执行
  2. JSP注释:<%-- --%>,可以注释HTML和整个的java代码块,也就是全能注释。使用这种注释,HTML数据根本就不会发送到浏览器
  3. Java注释:在Java代码块内部使用,和java一样

推荐在JSP中都使用JSP注释

JSP内置对象

概念

在JSP页面中,不需要获取和创建就可以直接使用的对象,称为内置对象

JSP一共有九个内置对象:

1-4是JSP的域对象,是用来共享数据的

  1. pageContext,类型为PageContext。域范围是当前页面.还可以用来通过get方法获取其他8个对象,我们在讲Servlet的时候有讲到
  2. request,类型为HttpServletRequest。域范围是一次请求之内
  3. session,类型为HttpSession。域范围是一次会话的多次请求之间
  4. application,类型为ServletContext。域范围是所有用户间,也是最大的域对象
  5. response,类型为HttpServletResponse。响应对象
  6. page,类型为Object。代表当前页面的对象,其实就是this的引用
  7. out,类型为JspSriter。输出对象,将数据输出到页面上
  8. config,类型为ServletConfig。Servlet配置对象。
  9. exception:类型为Throwable(它是Exception的父类),在isErrorPage为true时可以在页面中使用

Java Web-JSP学习的更多相关文章

  1. java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象

     JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...

  2. 【Java Web开发学习】Spring4整合thymeleaf视图解析

    [Java Web开发学习]Spring4整合thymeleaf视图解析 目录 1.简单介绍2.简单例子 转载:https://www.cnblogs.com/yangchongxing/p/9111 ...

  3. 【Java Web开发学习】跨域请求

    [Java Web开发学习]跨域请求 ================================================= 1.使用jsonp ===================== ...

  4. 【Java Web开发学习】Spring MVC 使用HTTP信息转换器

    [Java Web开发学习]Spring MVC 使用HTTP信息转换器 转载:https://www.cnblogs.com/yangchongxing/p/10186429.html @Respo ...

  5. 【Java Web开发学习】Spring JPA

    [Java Web开发学习]Spring JPA 转载:https://www.cnblogs.com/yangchongxing/p/10082864.html 1.使用容器管理类型的JPA JND ...

  6. 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener

    [Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...

  7. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor

    [Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...

  8. 【Java Web开发学习】Spring MVC文件上传

    [Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...

  9. 【Java Web开发学习】Servlet、Filter、Listener

    [Java Web开发学习]Servlet 转发:https://www.cnblogs.com/yangchongxing/p/9274739.html 1.Servlet package cn.y ...

  10. 【Java Web开发学习】Spring MVC异常统一处理

    [Java Web开发学习]Spring MVC异常统一处理 文采有限,若有错误,欢迎留言指正. 转载:https://www.cnblogs.com/yangchongxing/p/9271900. ...

随机推荐

  1. Mac下持续集成-与JMeter与Ant执行后自动发送邮件的整合(性能报告)==

    配置信息如下,其他的为默认的: 添加性能测试报告后,性能测试报告部分构件失败:

  2. 背包DP 方案数

    题目 1 P1832 A+B Problem(再升级) 题面描述 给定一个正整数n,求将其分解成若干个素数之和的方案总数. 题解 我们可以考虑背包DP实现 背包DP方案数板子题 f[ i ] = f[ ...

  3. ColorDrawable

    最简单的一种Drawable,当我们将ColorDrawable绘制到Canvas(画布)上的时候, 会使用一种固定的颜色来填充Paint,然后在画布上绘制出一片单色区域! 1).Java中定义Col ...

  4. JVM的线程

    我们使用java命令来运行一个程序,那么就需要启动JVM , 而jvm的启动就相当于启动了一个进程 , 而这个进程在启动的时候会自动启动一个线程,由这个线程去调用main方法,而这个线程就是主线程 ; ...

  5. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_03-freemarker测试环境搭建

    新建一个module 选择parent test-freemarker spring‐boot‐starter‐freemarker:spring boot 提供的关于 freemaker的相关的包 ...

  6. 100% 加速 WebSAMS 3.0 (轉載)

    今日已經是WebSAMS Upgrade 的最後一日,已經有99.8% 學校成功upgrade WebSAMS 3.0.但有學校向我們反映WebSAMS 3.0 比2.0 慢,經過我們的Enginee ...

  7. 在win10上使用premake工具和vs2017编译运行Box2D源码和Testbed

    1.从github上下载Box2D源码的zip包 2.解压缩zip包 3.从premake网站下载premake5工具,解压后得到premake5.exe 4.将premake5.exe拷贝到Box2 ...

  8. Git常用命令速查表,新手必备版本控制

    Git 跟 SVN 一样,都是用于管理代码的版本控制工具.无论在项目中,我们负责哪一块,只要需要编写代码,就必须熟悉Git(依公司要求而定). 当然,用的越熟练,处理的项目越顺利,离出任CTO.迎娶白 ...

  9. java中如何在键盘中输入一串数字然后存入数组中?

    import java.util.Scanner; public class Tset { public static void main(String[] args) { System.out.pr ...

  10. NOIP 2015:信息传递

    题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...