Servlet-JSP入门

Servlet-JSP入门JSP作用:主要作用是代替Servlet程序回传html页面的数据。因为Servlet程序回传html页面数据是一件非常繁琐的事情,开发成本和维护成本都很高。一般的Servlet回传页面如下protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType(“text/html;charset=U

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

JSP

作用:主要作用是代替Servlet程序回传html页面的数据。因为Servlet程序回传html页面数据是一件非常繁琐的事情,开发成本和维护成本都很高。

一般的Servlet回传页面如下

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
   
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.write("<!DOCTYPE html>\r\n");
        writer.write("<html lang=\en\">\r\n");
        .....
        writer.write("</html>\r\n");
    }

可以看见非常的麻烦


访问jsp页面和html页面一样
jsp本质是一个servlet程序
当我们第一次访问jsp页面的时候。tomcat服务器会帮我们把jsp页面翻译成一个java源文件。并且对它进行编译成为.class文件

page指令
<%@ page attribute=“value” %>

buffer 指定out对象使用缓冲区的大小
autoFlush 控制out对象的 缓存区
contentType 指定当前JSP页面的MIME类型和字符编码
errorPage 指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage 指定当前页面是否可以作为另一个JSP页面的错误处理页面
extends 指定servlet从哪一个类继承
import 导入要使用的Java类
info 定义JSP页面的描述信息
isThreadSafe 指定对JSP页面的访问是否为线程安全
language 定义JSP页面所用的脚本语言,默认是Java
session 指定JSP页面是否使用session
isELIgnored 指定是否执行EL表达式
isScriptingEnabled 确定脚本元素能否被使用

include指令

<%@ include file=“文件相对 url 地址” %>
JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。

target
<%@ taglib uri=“uri” prefix=“prefixOfTag” %>
JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。

jsp脚本(不常用)
作用:可以给jsp翻译出来的java类定义属性和方法甚至是静态代码块,内部类等

<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/1/16
  Time: 12:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%!
        private Integer id;
        private String name;
        private static Map<String,Object> map;
        static { 
   
            map = new HashMap<String,Object>();
            map.put("a",1);
        }
        public int abc(){ 
   
            return 12;
        }
        public static class A{ 
   
            private Integer id = 12;
            private String abc = "abc";
        }
    %>>
</body>
</html>

在这里插入图片描述

jsp表达式脚本(常用)
<%%=表达式>
特点

  • 所有的表达式脚本都会被翻译到_jspService方法中
  • 表达式脚本都会被翻译成伟out.print()输出到页面上
  • 由于表达式脚本法医的内容都在_jspService()方法中所以——jspServicef()方法中的对象都可以直接使用
    作用:在jsp页面上生成数据
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/1/16
  Time: 12:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%!
        private static Map<String,Object> map;
    %>

    <%=12%><br>
    <%=12.12%><br>
    <%="我是字符串"%><br>
    <%=map%>
    <%=request.getParameter("passoword")%>
</body>
</html>

在这里插入图片描述

jsp代码脚本
作用:可以在jsp页面中,编写我们自学需要的功能。
代码脚本的特点是:

  • 代码加拨本翻译之后都在_jspService方法中
  • 代码脚本由于翻译到_jspService()方法中,所以在_jspService()方法中的现有对象都可以直接使用
  • 还可以由多个代码脚本快组合完成一个完成的java语句
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/1/16
  Time: 12:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body >

    <table border="1" cellspacing="0">
    <%
        for(int i = 0;i < 10;i ++){ 
   
           %>
            <tr>
                <td><%=i%>个数字</td>
            </tr>
            <%
        }
    %>
    </table>
</body>
</html>

在这里插入图片描述
JSP隐含对象

  • request HttpServletRequest类的实例
  • response HttpServletResponse类的实例
  • out PrintWriter类的实例,用于把结果输出至网页上
  • session HttpSession类的实例
  • application ServletContext类的实例,与应用上下文有关
  • config ServletConfig类的实例
  • pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
  • page 类似于Java类中的this关键字
  • exception exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象

jsp四大域对象

  • pageContext (PageContextImpl) 当前jsp页面范围内有效
  • request (HttpServletRequest类) 一次请求内有效
  • session (HttpSession类) 一个会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)
  • application (ServletContext类) 整个web工程范围内都有效(只要web工程不停止,数据都在)

域对象是可以像Map一样存取数据的对象。四个域对象功能一样,不同的是他们对数据的存取范围。

使用顺序
pageContext->request->session->application

静态请求和动态请求
静态请求:
动态请求:<jsp:include page=“相对 URL 地址” flush=“true” />

动态请求原理:JspRuntimeLibrary.include(request,response,”/include/footer.jsp”,out,false)

它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的时间是在页面被请求的时候。

监听器

  1. Listener监听器它是JavaWeb的三大组件之一。JavaWEB的三大组件分别是:Servlet程序,Filter过滤器,Listener监听器
  2. Listener是JavaEEl的规范接口
  3. 监听器的作用是,舰艇某种事物的变化,然后通过毁掉函数,返回给客户(程序)去做一些相应的处理。

ServletContextListener监听器
可以坚挺ServletContext对象的创建和销毁
ServletContext对象在web工程启动的时候创建,在web工程停止的时候销毁
监听到创建和销毁之后都会分别调用ServletContextListener监听器的方法反馈

使用步骤如下

  1. 编写一个类去实现ServletContextListener
  2. 实现其两个回调方法
  3. 到web.xml中去配置监听器
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168816.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 虚拟ip设置 – Keepalived详解

    虚拟ip设置 – Keepalived详解linux机器可以设置虚拟ip来实现双机热备功能

    2022年10月12日
    0
  • Vue父子组件传值的Demo「建议收藏」

    Vue父子组件传值的Demo「建议收藏」话不多说,直接上代码&lt;!DOCTYPEhtml&gt;&lt;htmllang="en"&gt;&lt;head&gt;&lt;metacharset="utf-8"&gt;&lt;title&gt;Vue父子组件传值&lt;/title&gt;&lt;scripttype="text/javascr

    2022年5月13日
    42
  • idea删除项目「建议收藏」

    idea删除项目「建议收藏」1.使用IDEA打开需要删除的项目,在项目文件上右击选择RemoveModule或者按Delete键2.之后会弹出删除提示,“RemoveModule‘xxx’fromtheproject?Nofileswillbedeleted.” 意思是移除指定模块,但没有文件被删除,就是说,模块移除了,磁盘上的文件还在点击“OK”之后,可以看到列表中还是存在些文件,这些文件是模…

    2025年6月12日
    23
  • 一些世界上著名杀软的专杀工具下载地址

    一些世界上著名杀软的专杀工具下载地址一些世界上著名杀软的专杀工具下载地址from:http://forum.ikaka.com/topic.asp?board=28&artid=7302339&page=1想了解更新的内容可以直接到卡卡论坛查看。1.Bitdefenderhttp://www.bitdefender.com/site/Download/browseFreeRemovalTool能找到LovGate,Parite,N

    2022年7月25日
    20
  • 大数据平台建设路径

    大数据平台建设路径数字化转型这几年成为了集团公司或大型企业寻求业务突破的重要手段,而且各行各业都不乏成功案例,例如金融行业的建设银行、招商银行、平安保险等,还有一些生动的例子,例如百丽鞋业。而国外的经典案例就是亚马逊和特斯拉。集团客户动静都很大,首先要做咨询规划,必须跟上投入和管理配套,然后可以开始平台建设,最终开始应用,赋能各业务线和产品线。从技术的角度,一个完整的大数据平台通常会三期建设。先看下图:蓝色部分是第一期内容,绿色部分是第二期内容,橙色部分是第三期内容。第一步,先建设大数据基础平台。首要满足的是数据汇聚

    2022年4月30日
    41
  • 手把手教你实现一个微信自动回复机器人「建议收藏」

    手把手教你实现一个微信自动回复机器人「建议收藏」RebateBot返利机器人项目地址项目描述关键词:返利微信阿里妈妈机器人跨平台返利机器人,基于微信建立机器人通道与用户通过聊天快速生成返利链接利用闲置微信和极小的电脑性能开启24小时无人轮值返利机器人购物只需要发送链接给机器人,机器人能马上给你回复优惠价格及链接功能实现微信机器人这个模块在这里可以看到最新的代码微信机器人[x]消息回调[x]自动回…

    2022年10月1日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号