JSP干货

一、 概念:

JSP全名Java Server Pages,中文名叫Java服务器网页,其根本就是一个简化的Servlet设计,一种动态网页技术标准.
特点 :

  • 本质还是Servlet;
  • 跨平台,一次编写处处运行(Java的特点);
  • 安全性和健壮性(健壮性指多复杂的业务逻辑都能处理);
二、JSP工作原理:

Web服务器如Tomcat只认识java编写的Servlet,当浏览器根据jsp访问路径访问一个jsp页面时,tomcat容器会认为当前访问的是一个Servlet,然后去路径下找Servlet.如果该路径下没有找到Servlet,则tomcat按照*.jsp拦截采用通用的Servlet处理.
该Servlet处理方式是通过IO流将jsp一行一行读到内存,使用response.getWriter().write("…")的方式生成另外一个Servlet并编译执行后返回前端展示.
Servlet中动态的获取数据返回给前端,则前端得到的数据也是动态更新的,这就是所谓的动态页面技术.

三、JSP知识:

1.JSP注释:

<%--注释内容--%>

2.JSP中插入java代码的标签:

//声明局部代码块(转译后在Service方法内部)
<% java局部代码块 %>
//声明局部代码块(转译后在Service方法外部,一般在全局代码声明方法,在局部代码块中调用)
<%! java全局代码块 %>

3.JSP的page指令:设置jsp转译为Servlet相关的参数

//指令格式
<%@ 指令内容 %>
//page指令(也可以写多个page标签,把多个属性分开放到page标签中也可以)
/**
*page:表示指令名称
*language:表示当前jsp要被翻译成的语言(目前也只能翻译成java语言)
*import:表示当前jsp中编写的java代码需要导入的java包,多个用逗号隔开
*pageEncoding:表示当前jsp保存时使用的编码格式,高版本jsp同时也可以同时设置返回给浏览器响应页面的编码格式
*session:如果jsp转化为的Servlet需要用session,则设置session="true",用不到则设置为false(默认为true)
*errorPage:	服务报错时跳转的错误页面
*extends:设置当前jsp转换为Servlet后需要继承的父类
*/
<%@ page language="java" import="java.util.*,java.lang.String" pageEncoding="utf-8" %>
<%@ page session="true" %>
<%@ page errorPage="错误页面(相对或绝对)路径,一般写相对路径" %>
<%@ page extends="父类全路径名" %>

4.JSP的include指令:(静态引入)

//静态引入(在一个jsp页面中引入另一个jsp页面)
//作用:将公共的jsp代码提取出来,需要是引入,方便修改
//注意:在两个jsp中避免使用同名的java变量,否则会报错
//Web容器在转译时会把两个jsp合成一个后转译成Servlet
<%@include file="静态资源相对路径" %>

5.JSP的动态引入:动态引入另一个jsp文件

  • 特点:
    1.动态引入jsp会被单独转译成一个Servlet;
    2.动态引入的调用方式是在调用方转译后的Servlet的java代码中调用被动态引入的jsp转译后的Servlet;
    3.可以在两个jsp中声明相同的java变量;
    4.实现效果和静态引入效果相同,但底层实现原理不同;
//动态引入标签
<jsp:include page="需要动态引入的jsp相对路径"></jsp:include>

在这里插入图片描述
6.JSP的forward标签:

<jsp:forward page="请求转发的jsp相对路径">
	//用来携带请求转发时的数据(没有参数时<jsp:forward></jsp:forward>中间不能有空格)
	<jsp:param value="" name="">
</jsp:forward>

7.JSP的九大内置对象:
内置对象是指jsp被Web容器转译成Servlet后,在Servlet中Web容器给声明的对象,我们在jsp中直接使用即可,且这九大内置对象只能在局部代码块中使用,不能在全局代码块中使用.

  • pageContext: 页面上下文对象,封装了其他八个内置对象,封装了当前jsp的运行信息,每个jsp拥有一个pageContext对象,作用域为当前jsp转译后的Servlet,方法执行完即销毁;
  • request: 封装当前请求数据的对象,由tomcat服务器创建.作用域为一次请求;
  • session: 用来存储同一个用户的不同请求的共享数据.作用域为一次会话;
  • application: 也就是servletContext对象,一个项目一个,存储所有用户的共享数据;
  • response: 响应对象:用来处理响应处理结果给浏览器,设置响应头,重定向;
  • out: 带有缓冲区的响应对象,效率高于response对象;
  • page: 代表当前jsp对象,相当于java中的this;
  • exception: 异常对象,存储当前运行的异常信息,使用时需要在page指令中使用属性isErrorPage="true"开启,不开启默认Web容器不会声明该对象;
  • config: 也就是ServletConfig,主要用来获取web.xml中的配置数据,完成一些初始化数据读取;
    在这里插入图片描述
    8.四大作用域:
  • pageContext: 当前页面,解决当前页面的数据共享问题(一般用不着),用来获取其他八个内置对象;
  • request: 一次请求,一次请求中的数据共享,通过请求转发,将数据流转到下一个Servlet;
  • session: 一次会话,一个用户不同请求的数据共享,将数据从一个请求流转到其他请求;
  • application: 也就是ServletContext,项目内,不同用户的数据共享,将数据从一个用户流转到其他用户;

4.JSP的脚本片段语句:
指在jsp页面代码中插入java变量或方法,动态的输出java变量的值或方法的返回值给页面

  • 特点:帮助我们快速的获取变量的或方法的返回值作为数据响应给浏览器.
  • 语法格式:
//java代码
<%
	String str = "测试jsp输出java变量";
%>
//在i标签中使用<%= %>来输出变量的值
<i><%=str%></i>
<i><%=test()%></i>
//等价于使用java标签执行:out.print(str);java代码
<i><% out.print(str); %></i>
<i><% out.print(test()); %></i>

.在JSP文件中编写Java代码的缺点:

  • 书写麻烦,阅读困难;
  • 最好的方式是jsp做页面展现,Servlet做请求逻辑处理;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值