首页 > 其他分享 >servlet基础

servlet基础

时间:2023-09-29 11:55:21浏览次数:23  
标签:count Servlet 代码 基础 ServletContext servlet response

第1关:实现第一个servlet程序

  • 任务描述
    本关任务:实现第一个Servlet程序。

  • 相关知识
    由于大多数Web应用都是通过HTTP协议和客户端进行交互,且在实际开发servlet中多是编写基于HTTP协议请求的servlet,在Servlet 接口中,专门提供了一个抽象类javax.servlet.http.HttpServlet,它是GenericServlet的子类(GenericServlet是Servlet接口的实现类),专门用于创建应用于HTTP协议的Servlet。为了读者可以更好地了解实际开发中的servle程序实现,本案例将演示如何编写基于HTTP协议请求的servlet。

  • 实现思路

  1. 创建FirstServlet类继承Httpservlet类
  2. 重写开发常用的方法doGet()和doPost()并完成处理操作
  3. 对于该servlet的访问请求在浏览器中显示:第一个servlet程序!
  4. 提交测试
  • 编程要求
    根据提示,在右侧编辑器注明的代码编写区域补充代码,并提交测试。

  • 测试说明
    平台会对你编写的代码进行测试:

  • 测试输入:无

  • 预期输出
    第一个servlet程序!

  • 提示:

  • 输出:

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//代码写在标记区间之内
		/******Begin******/
        	response.setContentType("text/html;charset=utf-8");
		response.getWriter().append("第一个servlet程序!");
		/******End********/
	}

第2关:ServletConfig接口

  • 任务描述
    本关任务:掌握ServletConfig对象的使用

  • 相关知识
    在Servlet运行期间,经常需要一些辅助信息,这些信息可以使用注解@WebServlet或者在web.xml文件中使用一个或多个元素进行配置。当Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到一个ServletConfig对象中。为了让初学者熟悉ServletConfig对象,本关任务将使用ServletConfig对象读取配置文件中的参数。

  • 设计思路
    1) 在代码编写区间编写代码实现
    2) 在代码区间中,用getInitParameterNames()方法获得所有参数名, 用getInitParameter()方法获取所有参数的值
    3) 将参数的名称key和值value以 key:value 的形式输出

  • 测试说明
    平台会对你编写的代码进行测试:

  • 测试输入:无

  • 预期输出:
    author:xman
    company:GDCVI

  • 提示:

  • 输出:

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// 代码写在标记区间之内
	/****** Begin ******/
        PrintWriter out = response.getWriter();
        response.setHeader("Content-type","text/html; charset=UTF-8");
        ServletConfig cfg = getServletConfig();

        Enumeration<String> names = cfg.getInitParameterNames();

        while(names.hasMoreElements()){
            String name = names.nextElement();
            String value = cfg.getInitParameter(name);
            out.println(name + ":" + value);
         }
	/****** End ********/
	}

第3关:ServletContext接口

  • 任务描述
    本关任务:掌握用ServletContext对象实现多个Servlet对象数据共享。

  • 相关知识
    由于一个Web应用中的所有Servlet共享同一个ServletContext对象,因此ServletContext对象的域属性可以被该Web应用中的所有Servlet访问。为了让初学者熟悉ServletContext对象,本关将演示用ServletContext对象实现多个Servlet对象的数据共享

  • 设计思路
    统计网站的访问次数:
    1) 本关需要完成两个Servlet代码编写,FirstContext用于存储,SecondContext用于显示,可以通过点击代码区左上角代码文件切换不同的文件进行编辑。
    2) 在类FirstContext中的init()方法中给次数(count)设置一个初始值101,存入到 ServletContext中。
    3) 在类SecondContext中,每次访问doGet()方法就会执行 count + 1,并将count值存入到 ServletContext中。
    4) 在类SecondContext中用getAttribute ("count")方法获取到count值,并按照测试说明要求将结果输出到浏览器。

  • 测试说明
    平台会对你编写的代码进行测试:

  • 测试输入:无

  • 预期输出:
    你是本站第102次访客!

  • 测试输入:

  • 预期输出:

  • 提示:

  • 输出:

FirstContext.java:

	@Override
	public void init(ServletConfig config) throws ServletException {
	// TODO Auto-generated method stub
	super.init(config);
	//代码写在标记区间之内
	/******Begin******/
        int count = 101;
        ServletContext context = this.getServletContext();
        context.setAttribute("count", count);
	/******End********/
	}

SecondContext.java

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//代码写在标记区间之内
	/******Begin******/
	ServletContext context = this.getServletContext();
        int count = (Integer)context.getAttribute("count");
        count++;
        context.setAttribute("count", count);

        response.setHeader("Content-type","text/html; charset=UTF-8");
        response.getWriter().append("你是本站第" + count + "次访客!");
	/******End********/
	}

标签:count,Servlet,代码,基础,ServletContext,servlet,response
From: https://www.cnblogs.com/leiteorz/p/17736881.html

相关文章

  • python基础:python命令行选项
    一前言安装完python后,通过python关键字我们就可以执行python文件如下pythonxxx.py上面是很常见的在命令行执行py的方式,但其实python关键字后面还可以加上许多可选选项如python-cxxxxxpython-mxxxxx二python关键字后的可选选项python[-bBdEhiIOqsSuvVWx?][-ccom......
  • 编程基础与Python的开发模式
    1.3.1程序设计的概念1.逻辑设计(1)过程的起点是分析并确定需求。(2)从现实中抽象。(3)抽象过后是设计算法。2.程序设计(1)选择编程语言。(2)设计数据结构。(3)设计业务逻辑。(4)选择开发模式。1.3.2程序的生命周期(1)硬件部分。(2)操作系统。(3)汇编语言。(4)高级语言。(5)应......
  • 基础算法:离散化实现
    1、离散化值域大而数值稀疏的题目,通常先将需要操作的数映射到一个数组中,再做后续操作,可以大大减少时间复杂度。以AcWing.802为例,是一个典型的前缀和问题,但问题在于,若仅仅使用前缀和算法,时间复杂度会很高,因此需要先做离散化映射。题目要求如下:假定有一个无限长的数轴,数轴上每个......
  • Python 中的字符串基础与应用
    在Python中,字符串可以用单引号或双引号括起来。'hello'与"hello"是相同的。您可以使用print()函数显示字符串文字:示例:print("Hello")print('Hello')将字符串分配给变量是通过变量名后跟等号和字符串完成的:示例a="Hello"print(a)多行字符串您可以使用三个引号将多......
  • CSS 基础 4 - CSS 常用单位
    CSS基础4-CSS常用单位px:基础单位em:相对当前父容器的系数,可以累乘rem:相对根<html>的系数,方便计算vw/vh:viewportwidth/height,整个浏览器的大小,取值范围1-100如100vh,占满高度,如果出现滚动条,是因为body预设的padding和margin如30%宽度的侧边栏:height:100vh;......
  • 10分钟巩固多线程基础
    10分钟巩固多线程基础前言多线程是并发编程的基础,本篇文章就来聊聊多线程我们先聊聊概念,比如进程与线程,串行、并行与并发再去聊聊线程的状态、优先级、同步、通信、终止等知识进程与线程什么是进程?操作系统将资源分配给进程,使用进程进行调度,但进程遇到阻塞任务时,为了提升CP......
  • CSS 基础 3 - 定位 Postion 属性
    CSS基础3-定位Postion属性staticposition属性的默认值,元素随HTML流移动top/left/right/bottom属性无效relative和static类似,元素随HTML流移动。区别:比static多了top/left/right/bottom(设定偏移量)【父相子绝】【可以作为父元素,让内部的absolute元素根......
  • 巩固系统韧性三个基础策略
    众所周知我所在的团队常年解决线上问题,我也以为我们会在解决一个个具体问题的道路上无聊走到黑。但是最近出现的各种疑难杂症似乎让我们的工作有了一点乐趣,甚至有了更高级的意义。这些疑难杂症包括但不限于因为网络故障导致邮件发送失败因为数据库磁盘满导致数据出现了读写不......
  • 2023-2024-1 20231302 《计算机基础与程序设计》第一周学习总结
    作业信息这个作业属于计算机基础与程序设计https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01作业目标快速浏览一遍教材计算机科学概论,课本每章提出至少一个自己不懂的或最想解决的问题并在期......
  • 学期2023-2024-1 学号20231309 《计算机基础与程序设计》第一周学习总结
    学期2023-2024-1学号20231309《计算机基础与程序设计》第一周学习总结作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里2023-202341计算机基础与程序设计第一周作业这个作业的目标作业正文学期2023-2024-1学号20231309《......