JSP_基本知识

简而言之,把tomcat服务器会自动把jsp文件转译为servlet类。

 

 


 

一、简介

服务器响应客户端,大部分时候是响应一个html页面。

而在Servlet中使用io流编写html代码,很麻烦。

所以由Sun Microsystems公司倡导,许多公司参与,共同创建了一门技术,能够在代码中同时存在js、html、css、Java语言。

叫做Java Server Pages。

它的本质是Servlet的封装。


 

二、原理

解释器模式。

步骤:

  1、服务器发出一个请求到jsp文件,比如:

   2、tomcat服务器寻找别名是 index.jsp 的Servlet类,即使用 org.apache.jasper.servlet.JspServlet 进行响应。


 

      在tomcat的安装目录下的conf文件夹中的web.xml中配置了:

 

 

 

 


  3、JspServlet把.jsp文件的内容转义为Java代码。


 

    html、css、js代码:

 

     Java代码:

      1、直接在service方法体中。

      2、在Servlet类中,作为成员变量、属性存在。

      3、嵌入到输出流中。


    3、执行转义自动生成的servlet进行响应。

 

 

 


三、内容

1、page指令

  用来配置jsp文件的转译相关参数。

格式:

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

<!--
常见属性:
    language:声明要转译的语言
    import:要导入的包
    contentType:响应给浏览器的编码格式
    pageEncoding:jsp文件的编码格式
    session:设置是否开启session支持,默认开启,置为false则关闭
    errorPage:设置jsp运行错误跳转的界面
    extends:设置转译的java类继承的父类
-->

2、Java代码块

2.1、局部代码块

  会编译在servlet的响应方法中(service方法)。

格式:

<% Java代码 %>

2.2、全局代码块

  会编译在servlet类中作为成员变量或方法出现。

格式:

<%! 全局Java代码 %>

2.3、角标语句段

  会被编译在输出流中。

格式:

<%= Java脚本代码 %>

四、引入

为了减低代码冗余,我们需要引入相同的jsp代码,例如网页头,网页尾。

1、静态引入

  将引入的jsp文件一起转译为一个servlet类,实现合并效果

格式:

<%@includ file="相对路径" %>

2、动态引入

  会将引入的jsp文件单独转译为一个servlet,在当前文件转译好的方法中调用引入的jsp文件,实现合并效果

格式:

<jsp:include page="相对路径"></jsp:include>

五、转发

  打开另一个jsp页面,底层实现为请求转发,可以携带数据,数据以键值对的形式,用?隔开,拼接在转发路径后面(即get请求)。

格式:

<jsp:forward page="相对路径">
     <jsp:param name="键" value="值" />
</jsp:forward>

六、内置对象

  自动转译生成的响应方法(service方法)中自动生成的对象,可以在局部Java代码块中直接使用。

1、页面上下文

//封装了其他内置对象,以及当前jsp的运行信息
pageContext

2、请求响应对象

//请求对象
request
//响应对象
response

3、session对象

//用来储存用户不同请求直接的数据共享
session

4、ServletContext对象

//一个项目一个的共享对象
application

5、输出流对象

//直接把内容响应给浏览器,会解析html
out

7、this对象

//转译生成的servlet类的运行时对象
page

8、异常对象

//储存了当前运行的异常信息,默认不开启,在page中指定isErrorPage="ture"开启
exception

9、ServletConfig对象

//可以获取web.xml中为此servlet配置的数据
config

七、路径

  在使用相对路径的时候,不能随意更改任意文件的位置。

给资源前面添加项目路径:

  此时访问资源,直接从项目根目录开始。

<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>

<base href="<%= basePath%>">

 

posted @ 2023-02-10 20:03  在博客做笔记的路人甲  阅读(41)  评论(0编辑  收藏  举报