为什么需要JSP?

与HTML相比:根据后台的业务,可以动态输出HTML,网页内容是可以改变的。
与原生Servlet相比:不需要自己写输出语句resp.getWriter().write("");

所以,servlet也称作动态网页技术。但是使用servlet极大不利于网页语言的编程,影响开发效率。

虽然servlet也可以写网页,但用java作为逻辑处理、请求处理更合适。
做处理之后的响应不太方便。

这时候会想,如果可以直接写HTML代码就好了——使用JSP,在保留servlet的优点的同时,可以像编写HTML一样,流畅的编写网页信息。可以在里面做业务逻辑判断,可以直接写HTML标签,不需要写输出语句。

JSP学习

JSP 全名为Java Server Pages,中文名叫java 服务器页面,其根本是一个简化的Servlet 设计,它是由Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准。

特点:

本质上还是Servlet
跨平台,一次编写处处运行
组件(组件含义为核心内容)跨平台
健壮性和安全性

Jsp 的访问原理:

浏览器发起请求,请求JSP,请求被Tomcat 服务器接收,执行JspServlet 将请求的JSP 文件转义成为对应的java 文件(也是Servlet),然后执行转义好的java 文件。

Jsp 的语法和指令:

JSP 的page 指令
JSP 的taglib 指令
Jsp 的局部代码块
Jsp 的全局代码块
Jsp 的脚本端
Jsp 的注释
Jsp 的静态引入(JSP 的include 指令)
Jsp 的动态引入
页面转发(forword 标签)

Jsp 的内置对象:

PageContext 对象
Request 对象
Session 对象
Application 对象
Response 对象
Out 对象
Page 对象
Exception 对象
Config 对象

使用:

JSP 负责页面展现,Servlet 负责业务逻辑处理。

资源路径总结:

Jsp 中路径:

相对路径:…/…/资源
绝对路径:/虚拟项目名/资源路径

<%@page language="java" import="java.util.*,java.lang.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<%@page session="true" %>
<%@page errorPage="error.jsp"  %>
<%@page isErrorPage="true" %>
<%--Jsp的三种注释 前端语言注释:会被转译,也会被发送,但是不会被浏览器执行java语言注释:会被转译,但是不会被servlet执行Jsp注释:不会被转译。Jsp的page指令学习<%@page 属性名="属性值" 属性名="属性值"...%>language:声明jsp要被转译的语言。import:声明转译的java文件要导入的包,不同的包使用逗号隔开。pageEncoding:设置jsp文件的数据编码格式。contentType="text/html; charset=utf-8"  设置jsp数据响应给浏览器时,浏览器的解析和编码格式。session:设置转译的servlet中是否开启session支持,默认开启,true表示开启。false表示关闭。errorPage:设置jsp运行错误跳转的页面.extends:设置jsp转译的java文件要继承的父类(包名+类名)。    作用:配置jsp文件的转译相关的参数。Jsp的局部代码块:特点:局部代码块中声明的java代码会被原样转译到jsp对应的servlet文件的_JspService方法中代码块中声明的变量都是局部变量。使用:<% java代码  %>缺点:使用局部代码块在jsp中进行逻辑判断,书写麻烦,阅读困难。开发:servlet进行请求逻辑处理,使用jsp进行页面展现。Jsp的全局代码块:特点:声明的java代码作为全局代码转译到对应的servlet类中。使用:<%! 全局代码 %>注意:全局代码块声明的代码,需要使用局部代码块调用。Jsp的脚本段语句:特点:帮助我们快速的获取变量或者方法的返回值作为数据响应给浏览器。使用:<%=变量名或者方法%>注意:不要在变量名或者方法后使用分号。   位置:除jsp语法要求以外的任意位置。Jsp的静态引入和动态引入:静态引入:<%@include file="要引入的jsp文件的相对路径" %>特点:会将引入的jsp文件和当前jsp文件转译成一个java(Servlet)文件使用。在网页中也就显示了合并后的显示效果。注意:静态引入的jsp文化不会单独转译成java(Servlet)文件。当前文件和静态引入的jsp文件中不能够使用java代码块声明同名变量。动态引入:<jsp:include page="要引入的jsp文件的相对路径"></jsp:include>特点:会将引入的jsp文件单独转译,在当前文件转译好的java文件中调用引入的jsp文件的转译文件。在网页中显示合并后的显示效果。注意:动态引入允许文件中声明同名变量。jsp的转发标签:优点:降低jsp代码的冗余,便于维护升级。jsp的转发标签forward:使用:          <jsp:forward page="要转发的jsp文件的相对路径"></jsp:forward>特点:一次请求地址栏信息不改变。注意:在转发标签的两个标签中间除了写<jsp:param name="str" value="aaa" />子标签不会报错,其他任意字符都会报错。<jsp:param name="str" value="aaa" />name属性为附带的数据的键名value为附带的数据内容注意:会将数据以?的形式拼接在转发路径的后面。jsp的九大内置对象:内置对象:jsp文件在转译成其对应的Servlet文件的时候自动生成的并声明的对象。我们在jsp页面中直接使用即可。注意:内置对象在jsp页面中使用,使用局部代码块或者脚本段语句来使用。不能够在全局代码块中使用。内容:九个对象pageContext:页面上下文对象,封存了其他内置对象。封存了当前jsp的运行信息。注意:每个Jsp文件单独拥有一个pageContext对象。作用域:当前页面。request:封存当前请求数据的对象。由tomcat服务器创建。一次请求session:此对象用来存储用户的不同请求的共享数据的。一次会话application:也就是ServletContext对象,一个项目只有一个。存储用户共享数据的对象,以及完成其他操作。项目内response:响应对象,用来响应请求处理结果给浏览器的对象。设置响应头,重定向。out:响应对象,Jsp内部使用。带有缓冲区的响应对象,效率高于response对象。page:代表当前Jsp的对象。相当于java中的this。exception:异常对象。存储了当前运行的异常信息。注意:使用此对象需要在page指定中使用属性isErrorPage="true"开启。config:也就是ServletConfig,主要是用来获取web.xml中的配置数据,完成一些初始化数据的读取。四个作用域对象:pageContext:当前页面.解决了在当前页面内的数据共享问题。获取其他内置对象。request:一次请求。一次请求的servlet的数据共享。通过请求转发,将数据流转给下一个servlet。session:一次会话.一个用户的不同请求的数据共享。将数据从一次请求流转给其他请求。application:项目内.不同用户的数据共享问题。将数据从一个用户流转给其他用户。作用:数据流转Jsp的路径:在jsp中资源路径可以使用相对路径完成跳转,但是:问题一:资源的位置不可随意更改。问题二:需要使用../进行文件夹的跳出。使用比较麻烦。使用绝对路径:(必须会)/虚拟项目名/项目资源路径例如:<a href="/jsp/jspPro.jsp">jspPro.jsp</a><a href="/jsp/a/a.jsp">a.jsp</a><br />注意:在jsp中资源的第一个/表示的是服务器根目录,相当于:localhost:8080使用jsp中自带的全局路径声明:<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><base href="<%=basePath%>">作用:给资源前面添加项目路径:      http://127.0.0.1:8080/虚拟项目名/上
--%>
<html><head><title>jsp基本语法学习</title><meta charset="utf-8"/></head><body><h3>jsp基本语法学习</h3><hr /><!-- 局部代码块 --><%//声明java代码域--局部代码块声明String str="jsp中使用逻辑校验很难受";int a=2;if(a>3){%><b>jsp学习很简单</b><%} else{%><i>    <%=str%></i><%test();} %><!--全局代码块 --><%!int b=5;public void test(){System.out.println("我是全局代码块声明");}%><!--jsp的静态引入  --><%@include file="includeStatic.jsp" %><!-- jsp的动态引入 --><jsp:include page="includeActive.jsp"></jsp:include><!-- jsp的转发forward标签 --><%-- <jsp:forward page="forward.jsp"><jsp:param value="aaa" name="str"/></jsp:forward> --%><!-- jsp的 九大内置对象学习--><%//获取请求数据String s=request.getParameter("str");request.getAttribute("str");%><%=s%><%//response.sendRedirect("forward.jsp");%><!--Jsp的路径  --><br /><a href="/jsp/a/a.jsp">a.jsp</a><br /><a href="a/b/b.jsp">b.jsp</a><br /></body>
</html>

【Servlet】JSP学习-概念和运行原理相关推荐

  1. 【计算机视觉】计算机视觉入门大全:基础概念、运行原理、应用案例详解

    来源:图灵人工智能  「机器能够模拟人类视觉系统」的幻想已经过时了.自 1960 年代第一批学术论文出现以来,计算机视觉已经走了很远,现代系统已经出现,且它们可以集成到移动应用中. 今天,由于其广泛应 ...

  2. [深度学习概念]·梯度下降原理讲解

    目录 梯度下降的场景假设 梯度下降 微分 梯度 梯度下降算法的数学解释 梯度下降算法的实例 单变量函数的梯度下降 多变量函数的梯度下降 梯度下降算法的实现 coding time 小结 Further ...

  3. head first servlet jsp 学习笔记

    1.web服务器和客户做什么?他们如何交流 直白的讲,用户可以通过web浏览器请求一些资源,web服务器得到这些请求之后,查找资源,然后向用户返回一些结果. 这个服务器,可能是是物理主机,可能是web ...

  4. springBoot学习(二) 基础运行原理

    结论:SpringBoot所有的自动配置都是在启动的时候扫描并加载:spring.factories所有的自动配置类都在这里面,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应 ...

  5. Servlet学习之Servlet概念与运行流程

    Servlet介绍与使用 什么是服务器: Servlet的概念: Servlet的特点: Servlet的使用: web.xml参数配置: 问题: 服务器在接收到浏览器的请求后,会自动调用对应的逻辑代 ...

  6. web开发总结-Servlet与JSP(运行原理)

    文章结构:(1)剖析Servlet:(2)剖析JSP: 一.剖析Servlet: (1)概述: Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的web页面.它担当Web ...

  7. Web开发基础_Servlet学习_0011_Servlet中的多线程安全问题与Servlet运行原理

    Servlet中的多线程安全问题 Servlet运行原理 Servlet中的多线程安全问题 演示 案例演示: 工程案例目录结构 pom.xml: <project xmlns="htt ...

  8. JSP运行原理及运行过程

    学习J2EE时,初步了解了JSP,写过一篇小的总结:J2EE-JSP,当时还不是很了解它的运行机制. 学习DRP时,再次接触了JSP,在原来基础上有了更深的了解,了解了它的执行原理 1,JSP的运行原 ...

  9. IIS Web 服务器/ASP.NET 运行原理基本知识概念整理

    前言: 记录 IIS 相关的笔记还是从公司笔试考核题开始的,问 Application Pool 与 AppDomain 的区别? 促使我对进程池进了知识的学习,所以记录一下学习的笔记. 我们知道现在 ...

最新文章

  1. 推荐一波腾讯专家的技术书单,请收下!
  2. 银行营业网点管理系统——Servlet包(CityAreaServlet )
  3. 回看2020-数据库大讲堂
  4. 如何科学的组织React组件样式
  5. 分布式块设备复制:客户端
  6. 腾讯Q3财报看点:净利近10年来首次下滑 为硬科技持续“烧钱”
  7. 一个 JVM 参数引发的频繁 CMS GC
  8. CSS3之图片3D翻转效果(网页效果--每日一更)
  9. android复制粘贴功能,android 复制 粘贴 剪切功能应用
  10. 浅谈算法和数据结构: 三 合并排序
  11. 西电计算机网络ppt,《西安电子科技大学》PPT课件
  12. 交替性注意力_注意力不足的小朋友通常都是持续性专注力
  13. 易语言-通过快捷方式.lnk文件获取.exe源文件地址
  14. 【b503】篝火晚会
  15. 下载微软官方原版系统镜像
  16. 防火墙规则应用同一子网计算机,防火墙基础(一)
  17. 读《IDEO,设计改变一切》有感
  18. 嵌入式系统设计---实时系统与嵌入式操作系统
  19. Unity 一键制作预制体,一键修改预制体
  20. c++操作xml文件

热门文章

  1. bootstrap php zend,Zend Framework教程之Bootstrap类用法概述
  2. HDU2896(病毒侵袭--AC自动机)
  3. 后缀数组--(最长公共前缀)
  4. Catalan数推导及应用
  5. 逆向工程核心原理读书笔记-代码注入
  6. cocos2d-x游戏实例(21)-纵版射击游戏(8)
  7. 交换机网络嗅探方法之用ARP欺骗辅助嗅探
  8. frida 安装特定版本
  9. Solr vs ElasticSearch,搜索技术哪家强
  10. 别光看世界杯 7月还有一场音视频技术盛宴等着你