实验四 Servlet容器模型
实验四Servlet容器模型
一、实验目的
1. 掌握Web应用程序的DD文件web.xml的配置方法和作用;
2. 掌握如何通过ServletConfig获取Servlet的初始化参数;
3. 掌握ServletContext的概念,如何获得ServletContext对象;
4. 掌握如何通过RequestDispatcher转发请求。
二、实验原理
Web应用程序有严格定义的目录结构,它需要一个称为部署描述文件的文件web.xml来配置。对应用程序的每个Servlet,可以在web.xml中定义若干个初始化参数,然后通过ServletConfig对象获取这些参数。
ServletContext对象表示该应用程序的环境,通过该对象可以获得应用程序范围的初始化参数、容器版本信息、资源的URL、在其中存放共享数据以及登录日志等。
三、实验内容与步骤
(一)建立一个名为bookstore的Web应用程序
在Tomcat的webapps目录下,建立一个如下所示的目录结构:
|- bookstore
|- html (包含所有的HTML文件)
|- jsp (包含所有的JSP文件)
|- images (包含所有的GIF、JPEG和BMP图象文件)
|- index.html (默认的HTML文件)
|- WEB-INF
|-classes
├ lib
├ web.xml
图4.1 bookstore应用程序的目录结构
这样就建立了一个名为bookstore的Web应用程序,本实验后面的题目都在该应用程序下面完成。
(二)使用ServletConfig检索Servlet的初始化参数,【编写ConfigDemoServlet程序,修改web.xml 文件,在其中添加该Servlet的初始化参数:
Email:hacker@https://www.360docs.net/doc/b18687186.html,
Telephone:8899123
在浏览器的地址栏中输入下面URL访问该Servlet:
http://localhost:8080/bookstore/configDemo.do
程序运行结果如下图所示:
图4.1 ConfigDemoServlet程序的运行结果
(三)ServletContext的使用
修改上面程序,将email地址和电话使用ServletContext初始化参数传递给ConfigDemoServlet。使用ServletContext对象将email地址和电话信息写入日志文件中,并查看日志文件。
(四)下面是一个Servlet,它可以获得有关服务器的信息,验证并理解该servlet的工作过程。
package com.demo;
import java.io.*;
import java.util.*;
import javax.servlet.*;
public class ServerInfo extends GenericServlet {
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GB2312");
PrintWriter out = response.getWriter();
ServletContext sc = getServletContext();
out.println("");
out.println("
");out.println("
");out.println("
out.println("");
out.println("
");out.println("
服务器端信息:
");out.println("
站点名 | ");" + request.getServerName() + " | ");
端口号 | ");" + request.getServerPort() + " | ");
服务器类型 | ");" + sc.getServerInfo() + " | ");
支持Servlet版本 | ");"+sc.getMajorVersion()+"."+sc.getMinorVersion()+" | ");
服务器属性 | ");"); // 获得服务器属性集合 Enumeration attributes = sc.getAttributeNames(); while (attributes.hasMoreElements()) { String name = (String)attributes.nextElement(); out.println(name); } 2 out.println(" | ");
out.println("");
out.println("");
}
}
(五)简单的综合应用
【步骤1】创建一个名为input.html的HTML页面,其中包括一个表单,表单中包含两个文本域,分别供用户输入学号和姓名,该页面也包含提交和重置按钮。
【步骤2】定义一个名为com.demo.Student类,其中包括学号sno和姓名name两个private的成员变量,定义访问和修改sno和name的方法。
【步骤3】编写名为FirstServlet的Servlet,要求当用户在input.html中输入信息后点击“提交”按钮,请求FirstServlet对其处理。在FirstServlet中使用表单传递的参数(学号和姓名)创建一个Student 对象并将其作为属性存储在ServletContext对象中,然后获得通过ServletContext的getRequestDispatcher()方法获得RequestDispatcher()对象,将请求转发到SecondServlet。
【步骤4】在SecondServlet中取出ServletContext上存储的Student对象,并显示输出该学生的学号和姓名。在SecondServlet的输出中应该包含一个超链接,点击该连接可以返回input.html页面。
图4.2 input.html页面显示结果图4.3 SecondServlet显示结果
四、思考题
1. 如何通过ServletConfig获得Servlet参数?
2. 如何获得ServletContext对象,如何通过该对象获得上下文参数?
3. 如何使用ServletContext共享数据?
Servlets+Jsp+实验4:Servlet容器模型
4 实验四 Servlet容器模型 一.实验目的 1. 掌握Web应用程序的DD文件web.xml的配置方法和作用; 2. 掌握如何通过ServletConfig获取Servlet的初始化参数; 3. 掌握ServletContext的概念,如何获得ServletContext对象; 4. 掌握如何通过RequestDispatcher转发请求。 二.实验内容 1. 建立一个名为bookstore的Web应用程序 在Tomcat的webapps目录下,建立一个如下所示的目录结构: |- bookstore |- html (包含所有的HTML文件) |- jsp (包含所有的JSP文件) |- images (包含所有的GIF、JPEG和BMP图象文件) |- index.html (默认的HTML文件) |- WEB-INF |-classes ├ lib ├ web.xml 图4.1 bookstore应用程序的目录结构 这样就建立了一个名为bookstore的Web应用程序,本实验后面的题目都在该应用程序下面完成。 2. 使用ServletConfig检索Servlet的初始化参数 【步骤1】编写ConfigDemoServlet程序,内容如下: package com.demo; import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class ConfigDemoServlet extends HttpServlet{ String servletName=null; ServletConfig config=null; String email=null; String telephone=null; public void init() { config = getServletConfig(); servletName = config.getServletName(); email = config.getInitParameter("email"); telephone = config.getInitParameter("telephone"); } public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
软件开发实验报告doc
软件开发实验报告 篇一:软件开发实验报告 本科实验报告 课程名称:软件开发环境与工具实验报告 实验项目:CASE工具PowerDesigner的使用 实验地点:专业班级: 指导教师: XX年10月22日 本科实验报告 课程名称:软件开发环境与工具实验报告 实验项目:搭建Visual Studio开发环境,设计实验地点:致远楼B303指导教师:崔秀娟XX年9月28日 篇二:软件开发平台实验报告 课程设计报告 课程名称: 软件开发平台与工具任课教师: 姓名: 学号: 1. 引言 1.1. 课程设计项目 1.2. 背景简介从编程之初,便免不了和方法,类,接口之类的东西打交道。久而久之,自然会对此进行总结,
由此而产生了开发平台。而今中国的程序员之中,有很大一部分都是编一些企业MIS、政府MIS之类的程序。其主要工作就是对数据进行一下增删改查的操作,对MIS系统做一些基础的管理而已。软件开发平台有两种平台模式:一种是传统的C/S架构模式,一种是现在流行的B/S架构模式。B/S 架构模式是随着互联网的流行,自然又要求以互联网为基础,把这些都网络化,以实现网络资源共享,而不是传统的单机模式。这便激发了软件开发者的创造力,形成了软件开发平台的B/S架构模式(web开发平台)。对于web开发平台,我的个人理解是: 1.以web 2.0为基础,基于互联网的B/S架构的软件。它本身也是一个软件,只不过不是最终的软件产品,而是用于二次开发的软件。 2.用于实现各类业务系统,如CRM、MIS、ERP、HIS、OA 等等的开发。web开发平台本身就是一个二次开发平台,他不同于诸如eclipse等这样的开发工具,需要写大量的代码来完成各个业务模块,二次开发平台只需要设计好自己的数据结构,进行一些简单的配置、拖拉等操作就可以完成业务系统的开发。 3.能够快速的实现各种报表包括复杂的图表报表的设计制作,传统的编码式开发需要自己去编写想要的各种报表,而运用开发平台就简单多了,可以很轻松的配置出各种报表。
tomcat工作原理深入详解——How Tomcat Works 中文版
How Tomcat Works中文版 介绍 概要 欢迎阅读《How Tomcat Works》这本书。这本书解剖了Tomcat4.1.12和5.0.18版本,解释了它的servlet容器的内部运行机制,那是一个免费的,开源的,最受欢迎的servlet容器,代号为Catalina。Tomcat是一个复杂的系统,由许多不同的组件构成。那些想要学习Tomcat运行机制的朋友大部分知道从何入手。这本书会提供一个蓝图,然后为每一个组件构造一个简化版本,使得可以更加容易的理解这些组件。在这之后才会对真实的组件进行解释。 你应该从这份简介开始阅读,因为它解释了这本书的结构,同时给你勾画了这个项目构造的简洁轮廓。“准备前提软件”这一节会给你一些指示,例如你需要下载什么样的软件,如何为你的代码创建目录结构等等。 本书为谁而作 这本书是为任何一个使用Java技术进行工作的人而准备的。 ?假如你是一个servlet/jsp程序员或者一个Tomcat用户,而且对一个servlet容器是如何工作这个问题你感兴趣的话,这本书就是为你准备 的。 ?假如你想加入Tomcat的开发团队的话,这本书就是为你准备的,因为你首先需要学习那些已存在的代码是如何工作的。 ?假如你从未涉及web开发,但你对一般意义上的软件开发感兴趣的话,你可以在这本书学到一个像Tomcat一样的大型项目是如何进行设计和开发 的。 ?假如你想配置和自定义Tomcat,你也应该读读这本书。
为了理解书中的讨论,你需要了解Java面向对象编程技术以及servlet编程。假如你对这些不熟悉的话,这里有很多书籍可以参考,包括Budi的《Java for the Web with Servlets, JSP, and EJB》。为了让这些材料更容易理解,每一章开始都会有便于理解所讨论主题的必要的背景资料介绍。 Servlet容器是如何工作的 servlet容器是一个复杂的系统。不过,一个servlet容器要为一个servlet 的请求提供服务,基本上有三件事要做: ?创建一个request对象并填充那些有可能被所引用的servlet使用的信息,如参数、头部、cookies、查询字符串、URI等等。一个 request对 象是javax.servlet.ServletRequest或 javax.servlet.http.ServletRequest 接口的一个实例。 ?创建一个response对象,所引用的servlet使用它来给客户端发送响应。 一个response对象 javax.servlet.ServletResponse或 javax.servlet.http.ServletResponse接口的一个实例。 ?调用servlet的service方法,并传入request和response对象。在这里servlet会从request对象取值,给 response写值。 当你读这些章节的时候,你将会找到关于catalina servlet容器的详细讨论。 Catalina架构图 Catalina是一个非常复杂的,并优雅的设计开发出来的软件,同时它也是模块化的。基于“Servlet容器是如何工作的”这一节中提到的任务,你可以把Catalina看成是由两个主要模块所组成的:连接器(connector)和容器(container)。在Figure I.1中的架构图,当然是简化了。在稍后的章节里边,你将会一个个的揭开所有更小的组件的神秘面纱。 现在重新回到Figure I.1,连接器是用来“连接”容器里边的请求的。它的工作是为接收到每一个HTTP请求构造一个request和response对象。然后它把流程传递给容器。容器从连接器接收到requset和response对象之后调用servlet的service方法用于响应。谨记,这个描述仅仅是冰山一角而已。这里容器做了相当多事情。例如,在它调用servlet的service方法之前,它必须加载这个servlet,验证用户(假如需要的话),更新用户会话等等。一个容器
实验四 Servlet的应用
实验四Servlet的应用 实验要求: 用Servlet来完成实验三的所有任务,即先登录,然后留言,再显示留言。采用JSP+JavaBean+Servlet开发模式。 实验步骤如下: 1.创建登录页面login.jsp <%@page language="java"import="java.util.*"pageEncoding="gb2312"%>
2.创建处理登录的Servlet:DoLogin.java,过程如下: 选择项目中src文件夹,New Servlet,弹出Create a new Servlet对话框,设置如下(05为项目名称)单击next后,见下图,只对Servlet/Jsp Mapping URL :作如下修改,单击finish.
此时,web.xml中应存在如下Servlet配置信息:
JavaEE实验报告
JavaEE实验报告 实验名称浏览器信息提取评分 实验日期2017 年11月8日指导教师彭梦 姓名何昕曦燕专业班级计算机1591学号36 一、实验目的与要求 1、目的:从服务器端获取客户端浏览信息 2、要求:掌握利用request对象获取客户端浏览器各种信息的方法 二、实验内容与步骤 1、内容 编写一个获取客户端浏览器各种信息的JSP页面。 2、步骤 1) 在已有工程下新建一个文件browserinfo.jsp。 2) 在页面中使用request对象的getHeader(“User-Agent”)方法编程获取客户端浏览器的版本号、类型信息。 3) 在页面中分别使用request对象的getRequestURI()和 getRemoteAddr()方法编程获取客户端地址。 4) 在页面中分别使用request对象的getServerName()方法和getRemoteHost 方法编程获取服务器和客户端电脑名字。 5) 在页面中使用request对象的getServerPort()方法编程获取服务器端口号。 6) 点击运行按钮,参看运行结果是否与预想的一致。
三、实验结果 四、实验收获及体会 经过这次实验让我收获颇多,其中很多知识是在平时的学习中都是无法学习到的,并且也让我们把平时上课学到的知识用于实际当中,加强了自己的动手能力,一定程度上提高了编程能力,对javaee这一门课程也有了比较更加深厚的兴趣。同时,也掌握利用request对象获取客户端浏览器各种信息的方法,知道如何编写一个获取客户端浏览器各种信息的JSP页面。最后,由于所学知识不够全面,实验在很多方面还有待完善,在以后的学习过程中,会掌握更多知识,力求做到更好
应用Servlet实现购物车
应用Servlet实现购物车 具体实现过程 1、创建封装商品信息的值JavaBean---------GoodsSingle package com.yxq.valuebean; public class GoodsSingle { private String name; //保存商品名称 private float price; //保存商品价格 private int num; //保存商品购买数量public String getName() { return name; } public void setName(String name) { https://www.360docs.net/doc/b18687186.html, = name; } public int getNum() { return num; } public void setNum(int num) { this.num = num; }
public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } } 2、创建工具JavaBean-------- MyTools 实现字符型数据转 换为整型及乱码处理 package com.yxq.toolbean; import java.io.UnsupportedEncodingException; public class MyTools { public static int strToint(String str){ //将String型数据转换为int型数据的方法 if(str==null||str.equals("")) str="0"; int i=0; try{ i=Integer.parseInt(str); //把str 转换成
用 Servlet 进行文件上传的原理和实现
用Servlet 进行文件上传的原理和实现 Servlet 是用 Java 编写的、协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案。使用 Servlet 可以方便地处理在 HTML 页面表单中提交的数据,但 Servlet 的 API 没有提供对以 mutilpart/form-data 形式编码的表单进行解码的支持,因而对日常应用中经常涉及到到文件上传等事务无能为力。 如何用 Servlet 进行文件的上传,必须编程实现。 一、基本原理 通过 HTML 上载文件的基本流程如下图所示。 浏览器端提供了供用户选择提交内容的界面(通常是一个表单),在用户提交请求后,将文件数据和其他表单信息编码并上传至服务器端,服务器端(通常是一个 cgi 程序)将上传的内容进行解码了,提取出 HTML 表单中的信息,将文件数据存入磁盘或数据库。 二、各过程详解 A)填写表单并提交
通过表单提交数据的方法有两种,一种是 GET 方法,另一种是 POST 方法,前者通常用于提交少量的数据,而在上传文件或大量数据时,应该选用 POST 方法。在 HTML 代码中,在