初识 JSP


JSP (Java Server Page) 和 Servlet 都是用来解决动态 web 资源的技术。

原理

JSP 页面可以嵌入 Java 脚本,JSP 从本质上讲就是一个 Servlet,访问 JSP 页面本质上就是访问 JSP 对应的 Servlet 程序。
work/Catalina/localhost/项目名/org/apache/jsp/网页名
找到 JSP 对应的 servlet 的 class 文件,该类继承了 HttpJspBase(继承了 HttpServlet)

JSP 语法

  • JSP 模板元素
    就是 JSP 页面中的 HTML 代码,定义了网页的基本骨架
  • JSP 脚本片段
    <% 脚本代码 %>
  • JSP 表达式
    <%=变量名%>

    脚本表达式后面不能加分号!脚本片段中每行代码需要加分号!

  • 脚本声明(不常用),对应 Java 类中
    <%!
    	Java 代码
    	private String name;
    	static {
    		
    	}
    	public static void main(String[] args) {
    		
    	}
    	public void run() {
    		
    	}
    %>
  • JSP 注释
    <%-- 注释内容 --%>

    此注释在网页源码中看不到

  • JSP 指令
    `<%@ 指令类型 属性 %>
    • page 指令:让 JSP 页面选择开发语言

      <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util*, java...."%>

      language:让 JSP 页面选择开发的语言
      import: 导入 jar 包,jsp 自带的包(servlet.* servlet.http.* servlet.jsp.* java.lang),可以在同一个 import 属性下(用逗号隔开),也可以分多行写
      pageEncoding: 设置页面的编码
      contentType:设置服务器响应编码
      isThreadSafe: 设置线程是否安全(默认为 true 线程安全)
      buffer:设置 out 缓存(默认 8 kb), out 对象输出到浏览器两种情况
      1.等文档加载完毕
      2.缓冲区已满

    • include 指令:

想 jsp 页面中天健一个片段文件 .jspf

<%@ include file="xxx.jspf "%>

jspf 片段页面
- taglib 指令:
标签库 jstl

<%@ taglib %>
  • JSP 内置对象
    • request
    • response
    • out
    • session
    • pageContext
    • ServletContext application
    • ServletConfig config
    • page
    • Throwable exception(只有当页面设置了 isErrorPage=”true” 时才出现)

转发原理

  • 只有一次请求
  • 转发不会引起地址栏刷新
  • 转发可以携带数据,通过 request.setAttribute();
  • 转发也不能形成回路

重定向不可以携带数据
转发和重定向不可同时使用

使用 Servlet + JSP 完成 web 开发

MVC(Model View Controller) 设计模式
Servlet 负责逻辑控制,数据获取
JSP 负责数据接收,页面的显式
model 对数据进行 CRUD (Dao + entity))


文章作者: CrazyBunQnQ
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 CrazyBunQnQ !
 上一篇
会话技术之 Session 和 Cookie 会话技术之 Session 和 Cookie
浏览器和服务器通信的过程中会产生一些数据,Session 技术可以解决这些数据的保存问题。会话技术有两种: Cookie - 浏览器端的数据存储,将数据保存在浏览器端 Session - 服务器端的数据存储,将数据保存在服务器端
2017-04-25
下一篇 
初识 Servlet 初识 Servlet
Servlet 生命周期 初始化阶段第一次访问 Servlet 时,调用 init() 方法之后再次访问该 Servlet 时,会使用已经创建好的 servlet 为用户服务Servlet 是一个多线程的。 服务阶段(响应客户请求)会调用
2017-04-21
  目录