JSP简单了解——基础语法、内置对象、各类标签、JavaBean

本文介绍了JSP的基础概念和工作原理,包括JSP的动态特性、九大内置对象及其用途,以及JSP表达式、脚本片段、声明、指令的使用。此外,还探讨了JSP标签、JSTL和EL表达式的应用,并详细阐述了JavaBean在Web开发中的角色,强调了其作为数据载体和ORM映射的重要性。

JSP

JSP:Java Server Pages:Java服务器端页面。和Serlvet一样,用于动态Web技术!

最大的特点:写JSP就像是再写HTML。

区别:

  • HTML只给用户提供静态数据。
  • JSP页面中可以嵌入Java代码,为用户提供动态数据;

JSP原理

浏览器现象服务器发送请求,不管访问什么资源,其实都是在访问Servlet!
JSP最终也会被转化成一个Java类,JSP本质上就是一个Servlet。

//初始化
  public void _jspInit() {
  }
//销毁
  public void _jspDestroy() {
  }
//JSPService
  public void _jspService(HttpServletRequest request, HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {
      }

在Service方法中主要过程如下:
1.判断请求:

	if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
      final java.lang.String _jspx_method = request.getMethod();
      if ("OPTIONS".equals(_jspx_method)) {
        response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
        return;
      }
      if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
        response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
        response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
        return;
      }

2.内置一些对象:

	final javax.servlet.jsp.PageContext pageContext;  //页面上下文
    javax.servlet.http.HttpSession session = null;  //session
    final javax.servlet.ServletContext application;  //applicationContext
    final javax.servlet.ServletConfig config;  //config
    javax.servlet.jsp.JspWriter out = null;  //out
    final java.lang.Object page = this; //page:当前页
    
	HttpServletRequest request  //请求  
	HttpServletResponse response  //响应

    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;

3.输出页面前:

      response.setContentType("text/html;charset=UTF-8");  //设置响应的页面类型
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

4.以上的这些对象,我们可以在JSP页面中直接使用!在JSP页面中,只要是Java代码就会原封不动的输出;而HTML代码则会转换称out,write()的形式输出。

jsp页面转换整体流程如下:
用户访问页面,服务器处理jsp流程

JSP基础语法

Java的所有语法都支持。

JSP表达式<%= %>:

<%-- JSP 表达式
   作用将程序的输出,输出到客户端 
   <%= 变量或者表达式%>
   --%>
   <%= new java.util.Date()%>

JSP脚本片段<% %>

<%-- 脚本片段 --%>
  <%
    int sum = 0;
    for (int i = 1; i < 100; i++) {
      sum+=i;
    }
    out.println("<h1>Sum+" + sum + "<h1>");
  %>

JSP声明<%! %>

<%!
    static {
      System.out.println("Loading Servlet!");
    }
  %>

会被编译到JSP生成的Java类中!其它的被生成到_Service方法中!

JSP指令<%@ %>

  • 1.<%@page %>
	<%@page args....%>
  • 2.<%@include %>
    <%--@include 会将两个页面合二为一--%>
    <%@include file="common/header.jsp"%>
    <h1>网页主体</h1>
    <%@include file="common/footer.jsp"%>
    <hr>

    <%--  jsp标签
      jsp:include:拼接页面,本质还是三个
      --%>
    <jsp:include page="/common/header.jsp"/>
    <h1>网页主体</h1>
    <jsp:include page="common/footer.jsp"/>

9大内置对象

  • PageContext:存信息
  • Request:存信息
  • Session:存信息
  • Application (ServletContext):存信息
<%--内置对象--%>
<%

    pageContext.setAttribute("name1", "zzh1");  //保存的数据只在一个页面中有效
    request.setAttribute("name2", "zzh2");  //保存的数据只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name3", "zzh3");  //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name4", "zzh4");  //保存的数据只在服务器中有效,从打开服务器到关闭服务器
%>

<%
    //从底层到高层(作用域)page-->request-->session-->application
    //JVM 双亲委派机制在
    String name1 = (String) pageContext.findAttribute("name1");
    String name2 = (String) pageContext.findAttribute("name2");
%>
  • Response; config (ServletConfig); out ; page; exception(用的不多)。

JSP标签、JSTL标签、EL表达式

1.EL表达式:${ }

  • 获取数据
  • 执行预算
  • 获取Web开发的常用对象

2.JSP标签

<%jsp:include %>

<%jsp:forward page="">
	<jsp:param name="" value=""/>
</jsp:forward>	

3.JSTL标签:标签库的使用就是为了弥补HTML标签的不足;他自定义了许多标签,可以供我们使用,标签的功能和Java代码一样。

  • 核心标签
    需要先引入核心标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

然后即可利用以下标签进行相应的操作。
JSTL常用核心标签

  • 格式化标签

  • SQL标签

  • XML标签

JavaBean

实体类,具有特定的写法:

  • 必须有一个无参构造

  • 属性必须私有化

  • 必须有对应的get/set方法

  • 一般用来和数据库的字段映射:ORM:对象关系映射(表–>类;字段–>属性;行记录–>对象)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值