JSP原理及基础语法

JSP原理

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet。

JSP最终也会被转换成为一个Java类,JSP本质上就是一个Servlet。

源码分析
//初始化
public void _jspInit() {
    
}

//销毁
public void _jspDestroy() {
    
}

//JSPService
public void _jspService(.HttpServletRequest request,HttpServletResponse response)
内置对象
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;                      //响应
输出页面前增加的代码
response.setContentType("text/html");     //设置响应的页面类型
pageContext = _jspxFactory.getPageContext(this. request, response, null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
_jspx_out = out;

主要:以上的对象可以在JSP页面中直接使用

JSP执行流程点击查看
在JSP页面中:只要是JAVA代码就会原封不动的输出;

如果是HTML代码,就会转换为:

out.write("<html>\r\n");

输出到前端。

JSP基础语法

jsp表达式及注释

格式:

<%= 变量或者表达式%>
<%--JSP注释内容--%>
<!--HTML注释-->

JSP和HTML注释区别:JSP的注释不会在客户端显示HTML的会显示在客户端

用法:

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

jsp脚本片段

格式:

<%
	//代码
%>

用法:

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

其他写法

<%
    int x = 666;
    out.println(x);
 %>

<%--下面也能输入x的值--%>
 <%
    out.println("这也可输出x:" + x);
 %>

<hr>

<%--在代码中嵌入HTML元素--%>
 <%
     for (int i = 0; i < 5; i++) {

 %>
 <h1>Hello,打工人 <%=i%></h1>
 <%
     }
 %>

<%--EL表达式的写法--%>
<%for (int i = 0; i < 5; i++) {%>
<h1>Hello,打工人</h1>
<%}%>
jsp声明

格式:

<%!
    //代码!
%>

用法:

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

    private int globalVar = 0;

    public void cc() {
        System.out.println("进入了方法cc");
    }

%>

注意:JSP声明会被编译到JSP生成的Java类中,其他的就会被生成到_jspService方法

JSP指令

  • page指令: 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
  • include指令: 包含其他文件
  • taglib:引入标签库的定义
<%@page  %>
<%--指定一个JSP页面处理错误--%>
<%@page errorPage="error/500.jsp" %>

<%--表示当前页是否可以作为其他 JSP 页面的错误页面:false或true--%>
<%@page isErrorPage="false" %>

<%--导入包--%>
<%@page import="" %>

<%@include %>
<%--@include会将两个页面合二为一;两个页面里的变量名不能相同否则500错误--%>
<%@ include file="/common/header.jsp"%/>
	<h1>网页主体</h1>

<%--jsp:include拼接页面,本质还是两个页面;设置相同的变量名不会报错--%>
<jsp:include page="/common/header.jsp"/>
    <h1>网页主体</h1>

注意:使用jsp:include拼接页时,两个页面可以设置相同的变量名及方法名,而**@include回报500错误**

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值