实验Servlet容器模型
Web数据库实验报告servlet
6、掌握SerlvetConfig上下文的用法
实验内容
Servlet配置、servlet设计、会话管理、请求流转、上下文应用
实
验
过
程
、
结
果
及
分
析
一、
1、请建立一个servlet类用于显示当前的系统时间。写出它的url配置写法
package servlet;
import java.io.IOException;
<servlet>
<servlet-name>servletDate</servlet-name>
<servlet-class>servlet.servletDate</servlet-class>
</servlet>
然后进行映射,第一个斜杠是web应用的根路径;
<servlet-mapping>
<servlet-name>servletDate</servlet-name>
(4)boolean isLogin=session.getAttribute("islogin");
Login.html:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MyHtml.html</title>
实验报告(三)
院系:信息学院课程名称:Web数据库技术日期:
班级
Java web servlet容器模型实验
String userName=request.getParameter("userName");
String password=request.getParameter("password");
if(userName!=null&&password.equals("member")
byte[]buffer=new byte[1024];
FileInputStream fis =null;
BufferedInputStream bis =null;
try{
fis=new FileInputStream(file);
bis=new BufferedInputStream(fis);
</body>
</html>
2.LoginServlet的部分程序清单
@WebServlet(urlPatterns={"/login"})
public class LoginServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
request.getRequestDispatcher("/login.jsp");
dispatcher.forward(request, response);
return;
}
String dataDirectory=request.getServletContext().getRealPath("/WEB-INF/data");
实验五:Servlet实验
实验五Servlet实验实验目的:1.熟悉Servlet程序运行机制2.熟练掌握Servlet中进行页面重定向3.熟练掌握session的应用4.了解Servlet在项目开发中所应用的位置实验内容:一.Servlet生成页面内容按下列步骤完成简单Web应用项目。
1.一个最简单的Servlet程序新建一个项目,Dydamic Web Project类型,在该项目中新建一个Servlet,命名为WelcomeServlet 在doGet方法里面编写代码示例如下:protected void doGet(HttpServletRequest request, HttpServletResponse response) t hrows ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();out.println("<html><head><title>");out.println("欢迎页面");out.println("</title></head><body>");out.println("我们欢迎你!");out.println("</body></html>");out.close();}在Web.xml文件中加入如下代码(如已生成,可对照查看):<servlet><servlet-name>WelcomeServlet</servlet-name><servlet-class>user.web.WelcomeServlet</servlet-class></servlet><servlet-mapping><servlet-name>WelcomeServlet</servlet-name><url-pattern>/WelcomeServlet</url-pattern></servlet-mapping>在eclipse中运行此Servlet(演示效果如下:)图1 运行效果示例2.关于Servlet的url配置将上述Servlet在Web.xml中的配置代码改为如下:<servlet><servlet-name>WelcomeServlet</servlet-name><servlet-class>user.web.WelcomeServlet</servlet-class></servlet><servlet-mapping><servlet-name>WelcomeServlet</servlet-name><url-pattern>/test/welcome</url-pattern></servlet-mapping>修改完毕后,运行此Servlet程序,应能得到如图1的页面显示效果。
第2章 Servlet 模型
2.3.1 HTTP请求结构
客户向服务器发出的 HTTP 消息叫做HTTP请求(HTTP request)。 下面是一个典型的POST请求:
请求行 POST /bookstore/selectBook HTTP/1.1 Accept = */* Accept-Language = zh-cn Accept-Encoding = gzip, deflate User-Agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Host = localhost:8080 Connection = Keep-Alive name=Java+EE
4.GET方法和POST方法
GET方法用来检索资源。它的含义是“获得(get)由该 URI标识的资源”。
资源通常是被动资源。 GET也可以用来请求主动资源。 传递一个名为userid参数的请求行。
HTTP方法 查询串 HTTP版本
GET /servlet/helloServlet ? userid=john HTTP/1.1 URL串
2.1.1 javax.servlet包
1. Servlet接口 Servlet API中的核心接口,每个Servlet必须直接或 间接实现该接口。 该接口定义了如下5个方法。 • public void init(ServletConfig config) • public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException • public void destroy() • public ServletConfig getServletConfig() • public String getServletInfo()
Servlet编程实验报告
实验三Servlet编程20085154 杨阳一、实验内容(1)架设服务器端运行环境。
Servlet只能运行在Servlet容器上,Servlet容器负责处理客户请求,并把请求传递给servlet,同时把结果返回给客户。
选用了Tomcat4.0作为服务器。
安装Tomcat4.0之后,具体步骤为:→JCreator→Configure →Options→JDK Profiles→JDK version 1.6.0_07→add Archive,之后找到C:\Program Files\Apache Tomcat 4.0\common\lib,选中所用jar文件添加。
之后就可以编写代码并进行编译处理了。
如果没有上面的操作,一些在Servlet中用到的包、方法(如javax.servlet)无法被编译,会显示出许多错误。
程序编译没有错误后,复制生成的同名class文件放在C:\Program Files\Apache Tomcat 4.0\classes中,并启动Tomcat,在浏览器中输入http://localhost:8080/servlet/xxxxxxx,其中“xxxxxx”为具体文件名,将会生成客户端网页。
(2)编程思想:A、HelloWorldServlet.java导入javax.servlet包和javax.servlet.http包,因为其提供了servlet编程相关的类和接口。
然后程序涉及输入输出,导入java.io包。
所有的servlet都必须使用Servlet接口,该接口采用了生命周期的方法进行管理。
在这个程序里,使用了HttpServlet接口,实现了其接口定义的init()、service()、destroy()方法:public void init(ServletConfig config)throws ServletException{},这个方法返回实现ServletConfig接口的对象的引用。
02Servlet模型
理解ServletResponse(续)
•
在ServletResponse类中我们可以通过setContentType()方法和 setContentLength()方法设定返回内容的类型和长度,具体方法 声明如下: public void setContentType(String contentType) public void setContentLength(int contentLength)
意义 授权错误 资源禁止访问 资源不存在 请求方法禁止 请求超时 服务器内部错误
掌握HttpServletResponse (续)
•
如果我们需要让客户端浏览器跳转到别的网页资源,可以使用 sendRedirect()方法,方法声明如下:
public void sendRedirect(String url) • 其中的参数url即是我们希望浏览器转向的资源地址,具体关于 重定向的方法使用我们将会在后面讨论。
Servlet的service()方法
•
当Servlet初始化完毕以后,Servlet对象就可以响应并处理用 户请求了,在Servlet的生命周期中,大部分的时间是用来处 理请求的,当一个请求到来时,Web服务器将会调用Servlet 对象的service方法,service方法声明如下: public void service(ServletRequest request, ServletResponse response)
Servlet的init()方法
•
一旦Web服务器创建完servlet对象以后,将会立即调用Servlet 的init()方法,对servlet进行初始化,所以就算我们在 Servlet中使用了默认的构建器,我们对Servlet的初始化仍然可 以放到init()方法中,参数ServletConfig,代表的是配置信 息,即在web.xml中配置的信息。init方法的具体声明如下: public void init(ServletConfig config)throws ServletException public void init()throws ServletException
servlet实验报告
Servlet上机实验报告班级:软件 1 班学号:20姓名:张波时间:2015.一、实验目的1.掌握Servlet来访问数据库。
2.了解servlet工作的流程,servlet的作用。
3.掌握servlet的方法init(),destory(),doGet(),doPost();二、实验环境+ Eclipse + MySQL数据库三、实验步骤1.创建一个动态网页的项目,名字为:Employeer,创建包,在包下新建Servlet,名为,里面代码实现和MySQL数据库的连接,并将数据库的内容以表格的形式显示到页面。
并将用于连接数据库的驱动jar包添加到JavaPath中。
2.配置,匹配访问页面的URL。
3.创建数据库Employee,在里面新建表emp,并在表中添加字段ename(雇员姓名),job(职位),sal(工资),hiredate(入职时间),并插入若干条数据。
添加的额数据如下:四、源代码;import class ShowEmployeeList extends HttpServlet {private static final long serialVersionUID = 1L;private Connection cn = null;@Overridepublic void init(ServletConfig config) throws ServletException { ();String driver = ("driver");String url = ("url");String user = ("user");String password = ("password");try {(driver);cn = (url, user, password);} catch (Exception e) {"Init error:" + ());}}public void destroy() {();try {if (cn != null && (!())) {();cn = null;}} catch (Exception e) {"Destroy Error:" + ());}}protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {("text/html");("GBK");PrintWriter out = ();("<HTML>");(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");(" <BODY>");try {String sql = "select ename,job,sal,hiredate from emp";PreparedStatement ps = (sql);ResultSet rs = ();("<h1>员工列表</h1>");("<table border='1' cellspacing='0'>");("<tr>");("<td>姓名</td><td>职位</td><td>工资</td><td>加入公司日期</td>");("</tr>");while ()) {("<tr>");("<td>" + ("ENAME") + "</td>");("<td>" + ("JOB") + "</td>");("<td>" + ("SAL") + "</td>");("<td>" + ("HIREDATE") + "</td>");("</tr>");}();();("</table>");} catch (Exception e) {("<h2>处理请求发生错误:"+ () + "</h2>");}("</BODY>");("</HTML>");();();}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}version="" encoding="UTF-8"><!DOCTYPE web-appPUBLIC "-/DTD Web Application /EN"""><web-app><servlet><servlet-name>ShowEmployeeList</servlet-name><servlet-class> <init-param><param-name>driver</param-name><param-value> </init-param><init-param><param-name>url</param-name><param-value>jdbc: </init-param><init-param><param-name>user</param-name><param-value>root</param-value></init-param><init-param><param-name>password</param-name><param-value>930515</param-value></init-param></servlet><servlet-mapping><servlet-name>ShowEmployeeList</servlet-name><url-pattern>/ShowEmployeeList</url-pattern></servlet-mapping></web-app>3.执行效果五、Java反射机制什么是反射机制反射机制是如何实现的Java反射是Java被视为动态(或准动态)语言的一个关键性质。
servlet实验报告
servlet实验报告Servlet 实验报告一、实验目的本次实验旨在深入了解和掌握 Servlet 的基本概念、工作原理及开发方法。
通过实际编写和运行 Servlet 程序,熟悉 Servlet 的生命周期,掌握如何处理 HTTP 请求和响应,以及如何与 Web 页面进行交互,从而提高对 Java Web 开发的理解和实践能力。
二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java EE Developers3、服务器:Apache Tomcat 904、 JDK 版本:JDK 18三、实验内容(一)简单的 Servlet 程序编写1、创建一个名为`HelloServlet` 的 Java 类,继承自`javaxservlethttpHttpServlet` 类。
2、重写`doGet` 和`doPost` 方法,在方法中实现输出一段简单的问候语到客户端浏览器。
```javaimport javaioIOException;import javaioPrintWriter;import javaxservletServletException;import javaxservlethttpHttpServlet;import javaxservlethttpHttpServletRequest;import javaxservlethttpHttpServletResponse;public class HelloServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {responsesetContentType("text/html");PrintWriter out = responsegetWriter();outprintln("<html><body>");outprintln("<h2>Hello, Servlet GET Method!</h2>");outprintln("</body></html>");}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {responsesetContentType("text/html");PrintWriter out = responsegetWriter();outprintln("<html><body>");outprintln("<h2>Hello, Servlet POST Method!</h2>");outprintln("</body></html>");}}```(二)Servlet 配置1、在`webxml` 文件中配置`HelloServlet` ,指定 Servlet 的名称、类路径和访问路径。
servlet实验报告
实验三Servlet编程一、目的通过servlet程序的编写、调试,使学生掌握servlet编程的思路,掌握servlet编程涉及的类、接口,促进学生对概念的理解,培养动手能力。
二、基本要求学生需要按时达到指定实验室上机。
调试教学中使用的程序示例,并加以修改,增加程序的功能。
完成实验后,需要按时提交实验报告。
三、实验内容(1)架设服务器端运行环境。
(2)编写、调试servlet小应用程序。
(3)在servlet中加入简单的网页标记,使得servlet能够向客户端的浏览器中发送数据。
(4)使用servlet访问数据库。
(5)实验代码及结果间附录四、实验方法与实验步骤(1)熟悉servlet编程所用的类及接口,掌握服务器端运行环境的架设方法,着重掌握Tomcat的使用方法。
(2)编写简单的servlet,在程序中加入简单的html标记,用于向客户端的浏览器中发送数据。
(3)编译servlet源程序,修改JDK或IDE提示的错误,直到编译源程序时无错误出现。
(4)运行servlet。
将编译好的ConDB.class文件放在Tomcat4.0安装目录下的webapps\examples\WEB-INF\classes目录下(或放在Tomcat4.0安装目录下的classes目录下),然后启动服务器,在浏览器的地址栏中输入http://127.0.0.1:8080/examples/servlet/ ConDB,即可观察servlet的运行结果。
如果不能正常运行,根据提示的错误修改源程序,直到能够显示正确的结果。
(5)利用第二章所学的JDBC技术,使用servlet访问数据库,将访问数据库的结果显示在客户端的浏览器中。
五、设备或工具使用说明软件要求:Windows操作系统,JDK 1.4或以上版本,JCREATOR或记事本编辑器,Access数据库,Tomcat服务器,浏览器。
软件具体用法参见课堂教学。
六、注意事项在编译之前要将Tomcat4.0安装目录下的common\lib\servlet.jar加入类路径classpath中,如果使用IDE编译servlet,可以修改IDE的Option。
ch3 Servlet容器模型
使用隐藏域
隐藏域,就是将上页的信息作为隐藏域传递给 下一页 关键代码 <input type=“hidden” name=“info1” value=“‘”+info1+”’ ”>
使用URL重写
URL重写,就是用Get请求参数的应用,当服 务器响应浏览器上一次请求时,将某些相关信 息用超链接方式响应给浏览器,超链接中包括 请求参数信息 out.println(“<a href=hello.do?start=‘“+hello+”’ ”>+hello+”</a>”);
举例:
•
2.3
如何使用HttpSession对象
利用Httpsession对象存储数据
将参数 Object 指定的对象 obj 添加到 session 对象中, 并为添加的对象指定了一个索引关键字,如果添加 的两个对象的关键字相同,则先前添加的对象被清 除。
(1)public void setAttribute(String key,Object obj)
使用Cookie
自动登录 举例: login.jsp 登陆页面
CheckUser.java 判断是否登陆页面,依据此思想可以写一 个过滤器,匹口
Servlet可以使用javax.servlet.ServletContext对象来获 得Web应用程序的初始化参数及其相关信息。
http协议为无状态通信协议但web应用程序的有些功能必须要多次请求来完成这种记得此次请求与之后请求关系的方式称为会话管理隐藏域就是将上页的信息作为隐藏域传递给下一页关键代码hello
第三章、Servlet容器模型
在Servlet程序代码中,可通过引 入ServletContext对象,获得与Web应 用程序相关的信息。 注意: ServletContext对象中存放 的信息可被属于该Web应用程序的所 有Servlet所共享。
ServletContext 对 象
Web应用程序的初始化参数
3.1节
区分Web初始化参数和Servlet初始化参数
参数种类 Web初始化参数 <web-app> <context-param> <param-name> <param-value> 被整个Web应用程序 的所有servlet共享 P66程序清单3-1 Servlet初始化参数 <web-app> <servlet> <init-param> <param-name> <param-value> 只能被特定的servlet 独享 P59程序清单2-14
– 调用某Servlet对象的getServletConfig()方法,获得容器传递给本 Servlet的ServletConfig对象的引用,然后通过该ServletConfig对象 的getServletContext方法获得ServletContext对象的引用: ServletConfig config=getServletConfig(); ServletContext context=config.getServletContext(); – 直接使用HttpServlet对象的getServletContext()方法获得对 ServletContext对象的引用。 ServletContext sc=getServletContext();
5servlet容器
Public void invoke(Request request, Response response, ContextValve contextValve) throws IOExeption, ServletException;
阀的invoke方法
管道任务 - StandardPiplineValveContext
组成
Servlet调用Pipline接口中的invoke方法来调用管道中的阀和基础阀。
Pipline接口中利用addValve和removeValve方法来添加删除阀。
阀是Valve接口的实例。主要是通过invoke方法来执行阀任务。 Contained接口是选择性实现接口,用于关联servlet容器。利用Contained实
ValveContext是作为管道的一个内部类实现的。 ValveContext最重要的方法是invokeNext方法.
在创建ValveContext实例后,管道会调用ValveContext实例的invokeNext方 法,ValveContext实例会首先调用管道中的第一个阀 ValveContext在调用阀的同时会将自身传入阀中,通过在调用阀中调用传入 的ValveContext的invokeNext来调用后续的阀。 当调用到的阀是最后一个的时候,调用基础阀。
Wrapper接口
Wrapper接口的实现类负责管理其基础servlet类的servlet
生命周期
Wrapper已经是最低级的servlet容器,不能在往Wrapper 里面添加子容器
Wrapper接口比较重要的方法是load()和allocate() Load()方法负责载入并初始化类 allocate()方法负责分配一个已经初始化的servlet实例
javaEE实验报告3---Servlet编程(word文档良心出品)
importjavax.servlet.http.HttpServletResponse;
erService;
publicclassLoginServletextendsHttpServlet {
}
returnb;
}
}
(14)编写登录的控制器LoginServlet
packagecom.wl.controller;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
publicclassMainextendsHttpServlet {
publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
response.setContentType("text/html;charset=utf-8");
this.doGet(request, response);
}
}
(6)项目部署、发布
(7)在浏览器的地址栏中输入:http://localhost:8080/ServletTest/Login
(8)观察运行结果:
(9)解决乱码问题
response.setContentType("text/html;charset=utf-8");
实验一-Servlet 基础编程
}
}
com.wl.filter
代码:
package com.wl.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
try {
if (rs.next()) {
b = true;
} else {
b = false;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
SQLHelper.close(rs, SQLHelper.getPs(), SQLHelper.getCt());
代码:
package com.wl.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
// 创建用户服务类对象
UserService userService = new UserService();
if (userService.checkUser(user)) {
// 判断条件为真,则页面跳转到主页面,登录成功 //跳转前,把用户姓名放置在attribute域中
javabean及servlet实验总结200字
JavaBean是一种可重用组件,具有多个属性和方法的Java类。
而Servlet是Java编程语言编写的服务器端程序,用于扩展请求-响应模型以及生成动态web内容。
在进行JavaBean及Servlet实验的过程中,我发现了一些重要的结论和体会:1. JavaBean的优势:通过实验,我发现JavaBean能够有效地封装数据和功能,并且可以在不同的模块中被重用,大大提高了代码的可维护性和扩展性。
2. Servlet的作用:在实验中,我发现Servlet可以接收来自客户端的请求,并且能够生成动态的web内容,具有很高的灵活性和可扩展性。
3. JavaBean和Servlet的配合:在实验中,我成功地将JavaBean和Servlet进行了结合,通过JavaBean封装数据和逻辑,再由Servlet来调用JavaBean中的方法获取数据并生成动态web内容。
4. 实验中遇到的问题:在实验过程中,我也遇到了一些问题,比如如何正确地配置Servlet的映射和如何处理请求参数等。
但通过仔细的学习和实践,我最终克服了这些问题。
5. 对JavaBean及Servlet的展望:通过本次实验,我对JavaBean及Servlet有了更深入的了解,并且对它们在实际项目中的应用也有了更清晰的认识。
我相信在未来的实际项目中,我能够更加熟练地运用JavaBean和Servlet,为项目的开发和维护提供更大的帮助。
通过本次JavaBean及Servlet实验,我不仅学习到了很多理论知识,更重要的是通过实践,更加深入地理解和掌握了JavaBean和Servlet 的使用方法和原理。
这对我的未来学习和工作都具有重要的意义。
JavaBean和Servlet是Java编程中非常重要和常用的两个组件,它们在实际项目中扮演着非常重要的角色。
在进行JavaBean和Servlet 的实验过程中,我深刻地体会到了它们的优势和作用,也遇到了一些问题并通过不断的学习和实践得以解决。
第3章 Servlet容器模型
http://localhost:8080/
3.2 部署描述文件
3.2.1 3.2.2 3.2.3 3.2.4 3.2.5
一个简单的DD DD文件的定义 使用<servlet >元素 使用<servlet-mapping >元素 使用<welcome-file-list>元素
一个简单的DD
部署描述文件 web.xml
1. 理解文档根目录 假设服务器主机名为,如果要访问 bookstore Web应用程序根目录下的index.html 文件, 应该使用下面的URL: /bookstore/index.html 要访问html目录中的/hello.html 文件,使用下面的 URL: /bookstore/html/hello.html
Java Web 编程技术
第3章 Servlet容器模型
3.1 3.2 3.3 3.4 3.5 3.6 Web应用的结构和部署 部署描述文件 ServletConfig接口 ServletContext接口 Servlet的多线程问题 一个综合实例
3.1 Web应用的结构和部署
3.1.1 Web应用程序 3.1.2 应用服务器 3.1.3 Web应用程序的目录结构
├ webapps ├ bookstore ├ html (包含所有的HTML文件) ├ images (包含所有的GIF、JPEG和BMP图象文件) ├ javascripts (包含所有的*.js文件) ├ jsp (包含所有的JSP文件) ├ index.html (默认的欢迎文件) ├WEB-INF ├ classes(应用程序的类文件) ├ com ├mycompany ├ MyClass.class ├ lib(驱动程序包和标签库包文件) ├ *.jar(jdbcdriver.jar,mytaglib.jar) ├ web.xml(部署描述文件)
实验4-Servlet容器模型
实验4 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的初始化参数【步骤1】编写ConfigDemoServlet程序,内容如下:package .servlet;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{response.setContentType(”text/html;charset=gb2312");PrintWriter out = response。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 Servlet容器模型一、实验目的1. 掌握Web应用程序的DD文件的配置方法和作用;2. 掌握如何通过ServletConfig获取Servlet的初始化参数;3. 掌握ServletContext的概念,如何获得ServletContext对象;4. 掌握如何通过RequestDispatcher转发请求。
二、实验原理Web应用程序有严格定义的目录结构,它需要一个称为部署描述文件的文件来配置。
对应用程序的每个Servlet,可以在中定义若干个初始化参数,然后通过ServletConfig对象获取这些参数。
ServletContext对象表示该应用程序的环境,通过该对象可以获得应用程序范围的初始化参数、容器版本信息、资源的URL、在其中存放共享数据以及登录日志等。
三、实验内容与步骤(一)名为bookstore的Web应用程序的目录结构在Tomcat的webapps目录下,项目目录结构如下所示。
|- bookstore|- html (包含所有的HTML文件)|- jsp (包含所有的JSP文件)|- images (包含所有的GIF、JPEG和BMP图象文件)|- (默认的HTML文件)|- WEB-INF|-classes├ lib├图 bookstore应用程序的目录结构这样就建立了一个名为bookstore的Web应用程序,本实验后面的题目都在该应用程序下面完成。
(二)使用ServletConfig检索Servlet的初始化参数【步骤1】编写ConfigDemoServlet程序,内容如下:package .*;import .*;import .*;import class ConfigDemoServlet extends HttpServlet{String servletName=null;ServletConfig config=null;String email=null;String telephone=null;public void init() {config = getServletConfig();servletName = ();email = ("email");telephone = ("telephone");}public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException{("text/html;charset=gb2312");PrintWriter out = ();("<html><body>");("Servlet名称:"+servletName+"<br>");("Email地址:"+email+"<br>");("电话:"+telephone);("</body></html>");}}【步骤2】修改文件,在其中添加下面Servlet定义和初始化参数定义<servlet><servlet-name>configDemoServlet</servlet-name><servlet-class><init-param><param-name>email</param-name></param-value></init-param><init-param><param-name>telephone</param-name><param-value>8899123</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>configDemoServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>【步骤3】在浏览器的地址栏中输入下面URL访问该Servlet:程序运行结果如下图所示:图 ConfigDemoServlet程序的运行结果(三)ServletContext的使用修改上面程序,将email地址和电话使用ServletContext初始化参数传递给ConfigDemoServlet。
使用ServletContext对象将email地址和电话信息写入日志文件中,并查看日志文件。
(五)下面是一个Servlet,它可以获得有关服务器的信息。
package .*;import .*;import .*;public class ServerInfo extends GenericServlet {public void service(ServletRequest request, ServletResponse response)throws ServletException, IOException {("text/html;charset=GB2312");PrintWriter out = ();ServletContext sc = getServletContext();("<html>");("<body>");("<head>");("<title>获取服务器端信息</title>");("</head>");("<body>");("<h2>服务器端信息:</h2>");("<table width=\"500\" border=\"1\">");("<tr>");("<td width=\"175\">站点名</td>");("<td width=\"325\">" + () + "</td>");("</tr>");("<tr>");("<td>端口号</td>");("<td>" + () + "</td>");("</tr>");("<tr>");("<td>服务器类型</td>");("<td>" + () + "</td>");("</tr>");("<tr>");("<td>支持Servlet版本</td>");("<td>"+()+"."+()+"</td>");("</tr>");("<tr>");("<td>服务器属性</td>");("<td>");如何通过ServletConfig获得Servlet参数答:通过ServletConfig接口中的方法获取参数,通过getServletName()获取Servlet的实例名,通过getInitParameter(“name”)获取name的初始化参数。
2. 如何获得ServletContext对象,如何通过该对象获得上下文参数答:Servlet容器在初始化Servlet时向其传入一个ServletConfig 对象,通过该对象的getServletContext()方法得到ServletContext对象,从而获得上下文参数。
3. 如何使用ServletContext共享数据答:首先将数据作为属性通过setAttribute("name",name)方法存入ServletContext对象中,然后如果在其他地方使用,则需要从ServletContext对象中通过getAttribute("name")方法取出。
五、实验总结本次实验主要是使我们掌握Web应用程序的DD文件的配置方法和作用,以及如何通过ServletConfig获取Servlet的初始化参数,了解ServletContext的概念,懂得如何获得ServletContext对象,进而掌握如何通过RequestDispatcher转发请求。
相信通过本次实验,我们对这方面的知识能了解得更加深刻,对以后的学习也会有所帮助。
六、附录代码【步骤1】<!DOCTYPE html><html><head><title></title><meta http-equiv="Content-Type"content="text/html;charset=UTF-8"></head><body><form action="FirstServlet" method="post">学号:<input type="text" name="id"><br>姓名:<input type="text" name="name"><br> <input type="submit" value="提交" ><input type="reset" value="重置" ></form></body></html>【步骤2】Student类package class Student {private String sno;private String name;public Student(String sno, String name) { = sno;= name;}public String getSno() {return sno;}public void setSno(String sno) {= sno;}public String getName() {return name;}public void setName(String name) {= name;}}【步骤3】FirstServletpackage class FirstServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {("UTF-8");String name = ("name");name = new String("ISO-8859-1"),"UTF-8");String id = ("id");Student s=new Student(id,name);ServletContext sc=();("s", s);RequestDispatcher rd=("/SecondServlet");(request, response);}}【步骤4】SecondServletpackage class SecondServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ServletContext sc=();Student st=(Student)("s");("UTF-8");("text/html;charset= UTF-8");String name = ();name = new String("ISO-8859-1"),"UTF-8");String id = ();PrintWriter pw = ();("<html>");("<head>");("</head>");("<body>");("<h3>学号:"+id+"</h3><p>");("<h3>姓名:"+name+"</h3><p>");("<a href=\"/test2/\">返回</a>");("</body>");("</html>");}}。