jsp访问原理和跳转流程

简介: jsp访问原理和跳转流程

1 为什么学习JSP

问题:在学习了 Servlet 之后,使用 Servlet 进行页面的展现,代码书写过于麻烦。极大的影响了开发的效率,那么有没有一种方式可以让我们像以前写网页一样来进行网页的编程工作呢?


解决:使用 JSP 技术


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


特点:本质上还是 Servlet跨平台,一次编写处处运行组件跨平台健壮性和安全性


2 什么是Java Server Pages?

JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。


JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。


JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。


JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。


3 为什么使用JSP?

JSP程序与CGI程序有着相似的功能,但和CGI程序相比,JSP程序有如下优势:


1.性能更加优越,因为JSP可以直接在HTML网页中动态嵌入元素而不需要单独引用CGI文件。


2.服务器调用的是已经编译好的JSP文件,而不像CGI/Perl那样必须先载入解释器和目标脚本。


3.JSP 基于Java Servlet API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。


4.JSP页面可以与处理业务逻辑的 Servlet 一起使用,这种模式被Java servlet 模板引擎所支持。


最后,JSP是Java EE不可或缺的一部分,是一个完整的企业级应用平台。这意味着JSP可以用最简单的方式来实现最复杂的应用。


默认代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'index.jsp' starting page</title>
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">    
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
  <!--
  <link rel="stylesheet" type="text/css" href="styles.css">
  -->
  </head>
  <body>
    This is my JSP page. <br>
  </body>
</html>


4 Jsp之间的资源转发:

20200225093053719.png


jsp之间的资源转发:

问题:不同的jsp在处理请求时,有可能会将当前的请求转发给另外的jsp进行处理。

解决:使用forward动作指令

使用:<jsp:forward page="要转发的jsp的相对路径"></jsp:forward>

特点:从当前jsp跳转另外一个jsp页面。

注意:forward标签中除了<jsp:param value="" name=""/>子标签以外不能出现其他内容,否则会报错。


5 Jsp如何防止和其他页面相同代码冗余度过高:

问题:发现,不同的jsp页面会使用相同的资源。如果将资源在每个jsp页面都单独声明则会造成代码的冗余量过高,不易于代码的维护和升级。

解决:使用静态引入和动态引入的方式

使用:静态引入:<%@include file="要引入的资源的相对路径"%>

特点:被引入的jsp文件和原有jsp文件被转译成一个java文件使用。

注意:静态引入的相关jsp文件中不能声明同名变量。

动态引入:<jsp:include page="static.jsp"></jsp:include>

特点:被引入的文件会被单独转译,原有jsp文件会调用被引入的jsp文件。

注意:动态引入的相关jsp文件中可以声明同名变量。

作用:实现了不同jsp之间的资源共享。            


6 Jsp在做业务逻辑实现的弊端:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'data.jsp' starting page</title>
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">    
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
  <!--
  <link rel="stylesheet" type="text/css" href="styles.css">
  -->
  </head>
  <body>
      <h3>jsp的页面</h3>
      <hr/>
      <%
      //设置请求编码格式
      //获取请求信息
      //处理请求信息
      int a=1;
      if(a>2){
      %>
      <b>使用jsp页面的展现非常舒服</b>
      <% 
      }else{
      %>
      <b>但是在jsp中进行业务逻辑处理很不方便</b>
      <%} %>
  </body>
</html>


7 jsp代码块学习:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--
  局部代码块
  声明方式:<% java代码 %> 
  特点:
  使用局部代码块声明的java代码会被原样转译到_jspService方法中。也就是局部代码。
--%>
<%
  int a=123;
  System.out.println(a);
  test();
%>
<%--
  全局代码块
  声明方式:<%! 声明全局java代码%>
  特点:
    全局代码块中声明的java代码,在被转译时,会转译成jsp对应的java文件的全局的代码。
  作用:
    声明方法和全局量等
  注意:
    使用全局代码块声明方法,使用局部代码块调用方法。
 --%>
<%!
  int b=456;
  public void test(){
  System.out.print("全局代码块声明");
  }
%>
<%--
  java脚本段、表达式 
  声明方式:<%=变量名或者方法名()%>
  作用:将java代码的运算结果数据或者其他数据响应给浏览器
  注意:
  在该表达式中不能使用分号结尾  
--%>
<i><%=a%></i>
<b>jsp代码块学习</b>
今天天气真好,适合学习

虽然不常用但是要知道,可以看出很多的<% %>来转义serverlet,看起来不美观而且需要反复转义很麻烦,所以使用JSP 负责页面展现,Servlet 负责业务逻辑处理。


8 需要使用的注释:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--
  jsp的注释:
    HTML注释:会被转译也会被响应给浏览器,但是浏览器不会执行。
    CSS注释:会被转译也会被响应给浏览器,但是浏览器不会执行。
    js注释:会被转译也会被响应给浏览器,但是浏览器不会执行。
    java注释:会被转译,但不会执行
    jsp注释:注释内容不会被转译,也不会被执行
      格式:%-- 注释内容 --%
 --%>
 <html>
  <head>
    <style type="text/css">
      /* 我是css注释 */
    </style>
    <script type="text/javascript">
      //我是js注释
    </script>
  </head>
  <%
    //int a=3;
    int b=456;
  %>
  <body>
    <!--我是HTML注释  -->
    <!-- <i>hhh</i> -->
    <b>HTML注释</b>
  </body>
 </html>
目录
相关文章
|
Java
18JavaWeb基础 - 图解JSP输出缓冲区原理
18JavaWeb基础 - 图解JSP输出缓冲区原理
50 0
|
6月前
|
缓存 小程序 前端开发
Java服务器端技术探秘:Servlet与JSP的核心原理
【6月更文挑战第23天】Java Web开发中的Servlet和JSP详解:Servlet是服务器端的Java小程序,处理HTTP请求并响应。生命周期含初始化、服务和销毁。创建Servlet示例代码展示了`doGet()`方法的覆盖。JSP则侧重视图,动态HTML生成,通过JSP脚本元素、声明和表达式嵌入Java代码。Servlet常作为控制器,JSP处理视图,遵循MVC模式。优化策略涉及缓存、分页和安全措施。这些技术是Java服务器端开发的基础。
66 9
|
6月前
|
搜索推荐 Java 数据库连接
探索Java Web开发:Servlet与JSP的协同工作原理
【6月更文挑战第23天】Java Web开发中,Servlet和JSP协同打造动态网站。Servlet是服务器端的Java程序,处理HTTP请求并执行复杂逻辑;JSP则结合HTML和Java,生成动态内容。Servlet通过`doGet()`等方法响应请求,JSP在首次请求时编译成Servlet。两者常搭配使用,Servlet处理业务,JSP专注展示,通过`RequestDispatcher`转发实现数据渲染。这种组合是Java Web应用的基础,即使新技术涌现,其价值仍然重要,为开发者提供了强大的工具集。
67 7
|
7月前
|
存储 Java 应用服务中间件
JSP的运行原理是什么?JSP的作用域有哪些?
JSP四大作用域分别为:page、request、session、application。
107 11
|
7月前
|
前端开发 Java 数据库
【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解
【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解
|
7月前
|
存储 Java
JSP原理以及基本语法
JSP原理以及基本语法
|
前端开发 Java 关系型数据库
欢迎来到Jsp编程课时十三——分解原理:构建自己的思路,目标更好的理解对数据的增伤改查的原理和过程。
欢迎来到Jsp编程课时十三——分解原理:构建自己的思路,目标更好的理解对数据的增伤改查的原理和过程。
104 0
|
开发框架 JavaScript 前端开发
谈谈ASP、PHP和JSP的优缺点,底层原理是什么?
谈谈ASP、PHP和JSP的优缺点,底层原理是什么?
233 0
|
2月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
73 0
|
4月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上