专栏首页逆回十六夜javaWeb idea学习笔记(七)Jsp极速入门
原创

javaWeb idea学习笔记(七)Jsp极速入门

JSP本质就是Servlet

Java Server Pages

Jsp基础语法

指令

Page指令

通常位于jsp页面的顶端,同一个页面可以拥有多个page指令

<%@ page 属性1=“属性值1” 属性2=“属性值2”...%>

属性:

language,指定jsp页面使用脚本语言,默认是java

import,通过该属性来引用脚本语言中使用到的类文件,默认值无

contentType,用来指定Jsp页面所采用的编码方式,默认值:text/html,ISO-8859-1

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

Include指令

将一个外部文件嵌入到jsp页面中同时解析这个页面的jsp语句

include指令,(静态包含)被包含的文件被原封不动的插入到包含页面中使用该指令的位置,然后JSP编译器再对这个合成的文件进行编译,最终编译后的文件只有一个。   是在翻译阶段执行

<jsp:include> (动态包含)包含文件时,当该动作标识执行后,JSP程序会将请求转发到(注意不是重定向)被包含页面,并将执行结果输出到浏览器中,然后返回页面继续执行后面的代码,以为web容器执行的两个文件,所以JSP编译器会分别对这两个文件进行编译。   在请求处理阶段执行.

从表面上来看就是一个带参数一个不带参数

示例:

one.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>one</title>
</head>
<body bgcolor="<%=request.getParameter("bgcolor")%>">
这是页面1
</body>
</html>

two.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>two</title>
</head>
<body>
<jsp:include page="one.jsp">
    <jsp:param name="bgcolor" value="red"/>
</jsp:include>
这是页面2
</body>
</html>

可以理解为直接插入到页面的位置

<html>
<head>
    <title>two</title>
</head>
<body>
<html>
<head>
    <title>one</title>
</head>
<body bgcolor="red">
这是页面1
</body>
</html>
这是页面2
</body>
</html>

taglib指令

使用标签库定义新的自定义标签,在jsp页面中启用定制行为

注释

html注释<!--内容--> 客户端可见

jsp注释<%--内容--%> 客户端不可见

或者

<%

//注释

/*注释*/

%>

Jsp脚本

<%
    out.println("大家好,我是个人练习生蔡徐坤!");
%>

Jsp声明

<%!
    String s="张三";          //声明变量
    int add(int x,int y){    //定义函数
        return x+y;
    }
%>

Jsp表达式

<p>字符串内容为<%=s%></p>
<p>表达式的计算为<%=add(5,6)%></p>

Jsp页面的生命周期

用户第一次发起请求,jsp引擎将jsp转化为servlet,生成字节码文件并执行JspInit,之后执行JspService,如果不是第一次请求,则直接执行JspService

Jsp生成的Servlet常驻内存响应速度快,每一个请求生成一个新的线程来处理,要考虑线程同步的问题,并非线程安全

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • javaWeb idea学习笔记(五)ServletRequest、ServletResponse

    2.tomcat会创建request和response对象传递给service方法,并调用service

    逆回十六夜
  • javaWeb idea学习笔记(二)WEB项目

    经过百度查资料才知道,在idea中配置的tomcat,在运行时idea不会把项目放到自己的webapps路径下,而是在${user.home}/.Intelli...

    逆回十六夜
  • JAVA内存分析详解--笔记

    原教程:https://www.bilibili.com/video/av30023103/?p=64

    逆回十六夜
  • 为什么这段代码输出的是”Hello World”

    明明是在程序里使用了java.util.Ramdom()函数产生随机数,为什么每次打出的结果都是Hello world? 各位程序员,你们怎么看?请务必要独立思...

    哲洛不闹
  • 数据分析从业者必看!10 个加速 python 数据分析的简易小技巧

    AI 开发者按,一些小的技巧在编程领域可能会非常有用,在数据科学领域同样如此。数据科学爱好者 Parul Pandey 在近日发表了一篇博文,分享了在数据科学中...

    AI研习社
  • 摹客 iDoc 201901-1 功能优化点评

    2019唰地一下就来了,摹客iDoc也为大家带来了201901-1版本的全新体验,迎接又一年的开始。小摹就先带大家快速预览一番:

    奔跑的小鹿
  • 为什么这段代码输出的是”Hello World”

    明明是在程序里使用了java.util.Ramdom()函数产生随机数,为什么每次打出的结果都是Hello world? 各位程序员,你们怎么看?请务必要独立思...

    哲洛不闹
  • 七夕前,我用AI做了个撩妹工具!程序员,只能帮你到这了...

    我用Python爬遍网上所有表白情话,得出以下出镜率最高的,然后用AI做了一个智能问答,根据你的选择来帮你梳理最适合你性格的情况!

    用户1737318
  • C++之继承

    构造函数是用来初始化类的数据成员,它不被子类继承。在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。

    zy010101
  • Adaptive CU Split Decision with Pooling-variable CNN for VVC Intra Encoding

    作者在这篇论文中引入了CNN来解决CU划分的问题。其创新点使用了一个自适应的策略来解决VVC中不同尺寸CU输入CNN的难题。该自适应的策略和以前直接下采样输入的...

    Aidol

扫码关注云+社区

领取腾讯云代金券