栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Servlet 学习总结(六)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Servlet 学习总结(六)

一、JSP

1、jsp概念

其实jsp就是一套翻译引擎。

例如我们访问的是index.jsp文件,其实底层执行的是index_jsp.class 这个java程序。

web服务器会把jsp文件翻译为java文件再编译生成class文件。

2、jsp本质

  • JSP实际上就是一个Servlet。
  • 从一个jsp文件翻译到生成一个class文件,生成的class文件就会继承HttpServlet
  • 那么jsp生命周期也就和Servlet的生命周期没有什么区别了

3、jsp文件第一次访问的时候比较慢是因为第一次还没有生成class文件,所以访问比较慢。

所以运维人员给客户演示的时候一般都会提前把jsp文件先运行一遍,目的是为了生成class文件。

4、jsp是什么?

  • JSP是java程序。(JSP本质还是一个Servlet)--翻译引擎
  • JSP是:JavaServer Pages的缩写。(基于Java语言实现的服务器端的页面。)
  • Servlet是JavaEE的13个子规范之一,那么JSP也是JavaEE的13个子规范之一。
  • JSP是一套规范。所有的web容器/web服务器都是遵循这套规范的,都是按照这套规范进行的“翻译”
  • 每一个web容器/web服务器都会内置一个JSP翻译引擎。

5、开发JSP的最高境界

眼前是JSP代码,但是脑袋中呈现的是java代码。出了错要检查java文件。

6、servlet和jsp区别是什么,什么时候应该选择jsp呢?

  • 职责不同
    • Servlet的职责是什么:收集数据。(Servlet的强项是逻辑处理,业务处理,然后链接数据库,获取/收集数据。)
    • JSP的职责是什么:展示数据。(JSP的强项是做数据的展示)
  • 就是说jsp主要做页面展示的。

7、JSP的基础语法
(1)在jsp文件中直接编写文字,对应的语法是:out.write("翻译到这里");也就是普通字符串。
(2)如果写的是html,css,js代码,也会被解释为字符串,只不过浏览器会将字符串进行解释执行。
(3)在jsp中怎么编写java程序?

  • 使用<% java语句; %>
  • 在jsp文件中这样的语法可以出现多次
  • 要注意的是:编写的java程序是出现在service方法中,所以该写什么和不该写什么要清楚。

(4)可以在service方法外部编写java程序吗?

  • 使用<%! %>
  • 一般都不建议使用,因为Servlet是支持多线程并发的,如果使用的话会涉及到线程安全问题。

(5)jsp的输出语句

  • 使用<%= %>
  • 什么时候使用呢?
    • 如果需要输出的是一个变量或者是java代码、动态的内容,那么可以使用<%= %>
    • 如果输出的是普通字符串,那直接在jsp文件中编写就可以了
  • <%= %>会被翻译为:out.print();
  • out.print()和out.write()区别在于能输出的类型不一样,out.write()只能输出普通字符串。

(6)jsp文件中如何使用注释

使用:<%--JSP的专业注释,不会被翻译到java源代码当中。--%>

(7)JSP基础语法总结:

  • JSP中直接编写普通字符串
    • 翻译到service方法的out.write("这里")
  • <%%>
    • 翻译到service方法体内部,里面是一条一条的java语句。
  • <%! %>
    • 翻译到service方法之外。
  • <%= %>
    • 翻译到service方法体内部,翻译为:out.print();
  • <%@page contentType="text/html;charset=UTF-8"%>
    • page指令,通过contentType属性用来设置响应的内容类型。

8、开发的时候一定要职责分明

JSP就是做数据展示。Servlet就是做数据的收集。(JSP中编写的Java代码越少越好。)一定要职责分明。

9、JSP文件的扩展名必须是xxx.jsp吗?

  • jsp文件的扩展名是可以配置的。不是固定的。
  • 在CATALINA_HOME/conf/web.xml,在这个文件当中配置jsp文件的扩展名。
  • 
        jsp
        *.jsp
        *.jspx
    
  • 小窍门:JSP如果看不懂,建议把jsp翻译成java代码,就能看懂了

10、JSP的指令

  • 指令的作用:指导JSP的翻译引擎如何工作(指导当前的JSP翻译引擎如何翻译JSP文件。)
  • 指令包括哪些呢?
    • include指令:包含指令,在JSP中完成静态包含,很少用了。(只做了解)
    • taglib指令:引入标签库的指令。JSTL标签库的时候会使用。
    • page指令:目前重点学习一个page指令。
  • 指令的使用语法是什么?
    • <%@指令名 属性名=属性值 属性名=属性值 属性名=属性值....%>

11、关于page指令当中都有哪些常用的属性呢?

<%@page session="true|false" %>
true表示启用JSP的内置对象session,表示一定启动session对象。没有session对象会创建。
如果没有设置,默认值就是session="true"
session="false" 表示不启动内置对象session。当前JSP页面中无法使用内置对象session。
<%@page contentType="text/json" %>
contentType属性用来设置响应的内容类型
但同时也可以设置字符集。
<%@page contentType="text/json;charset=UTF-8" %>
<%@page pageEncoding="UTF-8" %>
pageEncoding="UTF-8" 表示设置响应时采用的字符集。
<%@page import="java.util.List, java.util.Date, java.util.ArrayList" %>
<%@page import="java.util.*" %>
import语句,导包。
<%@page errorPage="/error.jsp" %>
当前页面出现异常之后,跳转到error.jsp页面。
errorPage属性用来指定出错之后的跳转位置。
<%@page isErrorPage="true" %>
表示启用JSP九大内置对象之一:exception
默认值是false。

12、JSP九大内置对象

  • jakarta.servlet.jsp.PageContext pageContext 页面作用域
  • jakarta.servlet.http.HttpServletRequest request请求作用域
  • jakarta.servlet.http.Session session会话作用域
  • jakarta.servlet.ServletContext application应用作用域
    • pageContext < request < session < application
    • 以上四个作用域都有:setAttrtbute、getAttribute、removeAttribute方法
    • 以上作用域的使用原则:尽可能使用小的域。
  • java.lang.Throwable exception
  • jakarta.servlet.ServletConfig config
  • java.lang.Object page (其实就是this,当前的servlet对象)
  • jakarta.servlet.jsp.JspWriter out (负责输出)
  • jakarta.servlet.http.HttpServletResponse response (负责响应)

JSP学习总结。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821908.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号