通过实现Servlet接口开发servlet
servlet在web.xml中配置方法

一、介绍servlet在web.xml中的配置方法Servlet是Java编写的服务器端程序,它可以响应客户端的请求并生成动态内容。
在Java Web开发中,通常会使用Servlet来处理用户的请求并生成响应。
而在配置Servlet时,web.xml文件是一个重要的配置文件,其中包含了Servlet的配置信息。
本文将介绍Servlet在web.xml中的配置方法。
二、创建Servlet类在配置Servlet之前,首先需要创建一个Servlet类。
可以通过继承javax.servlet.网络协议.HttpServlet类来创建Servlet类,该类必须实现doGet()或doPost()方法来处理请求。
下面是一个简单的Servlet 类的代码:```javaimport javax.servlet.网络协议.HttpServlet;import javax.servlet.网络协议.HttpServletRequest;import javax.servlet.网络协议.HttpServletResponse;public class HelloWorldServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) {//处理GET请求的逻辑}protected void doPost(HttpServletRequest request, HttpServletResponse response) {//处理POST请求的逻辑}}```三、在web.xml中配置Servlet在web.xml文件中使用<servlet>和<servlet-mapping>元素来配置Servlet。
首先在<servlet>元素中指定Servlet的名称和Servlet类的完整路径,例如:```xml<servlet><servlet-name>HelloWorldServlet</servlet-name><servlet-class.example.HelloWorldServlet</servlet-class></servlet>```其中,<servlet-name>用于标识Servlet的名称,<servlet-class>指定了Servlet类的完整路径。
关于servlet接口getattribute方法

关于servlet接口getAttribute方法1. 简介Servlet是一种用于扩展服务器功能的Java类。
它们在服务器端响应客户端请求时运行。
在开发Web应用程序时,我们经常需要使用Servlet来处理用户提交的表单数据、调用数据库等操作。
在Servlet 中,我们经常会用到getAttribute方法来获取ServletContext、HttpServletRequest和HttpSession中的属性。
本文将介绍getAttribute方法的使用和注意事项。
2. Servlet接口getAttribute方法在Servlet接口中,有一个名为getAttribute的方法,它用来获取与该Servlet相对应的ServletContext、HttpServletRequest和HttpSession中的属性。
它的使用语法如下:```javaObject getAttribute(String name)```3. 使用示例我们可以在Servlet中使用getAttribute方法来获取ServletContext 中的属性:```javaServletContext context = getServletContext();String initParamValue = (String)context.getAttribute("initParamKey");```4. 注意事项在使用getAttribute方法时,有一些注意事项需要我们注意:- 当获取的属性不存在时,getAttribute方法将返回null。
我们在使用返回值之前需要进行空值检查,以防止空指针异常的发生。
- Attribute的取值得到的是Object类型,我们在使用时需要进行类型转换。
- 数据类型需要匹配才能成功获取属性值。
如果属性值的数据类型与我们期望的数据类型不匹配,将会抛出ClassCastException异常。
servlet 调用方法

servlet 调用方法Servlet是Java编写的服务器端程序,可以处理来自客户端的HTTP请求并生成HTTP响应。
在Servlet中调用方法是常见的操作,可以通过调用方法来实现对请求的处理和生成响应的功能。
在Servlet中调用方法的方式有多种,下面将介绍几种常用的方法调用方式。
一、普通方法调用在Servlet中可以直接调用普通的Java方法。
通过在Servlet中创建一个对象,然后调用对象的方法来实现对请求的处理和生成响应。
例如,可以在Servlet中创建一个处理请求的对象,并调用对象的方法来处理请求。
二、继承方式调用Servlet可以继承其他类,并重写其中的方法来实现对请求的处理和生成响应。
通过继承其他类,可以直接调用父类中的方法或重写父类的方法来实现特定的功能。
三、接口方式调用Servlet可以实现其他接口,并实现接口中的方法来实现对请求的处理和生成响应。
通过实现接口,可以调用接口中定义的方法来实现特定的功能。
四、反射方式调用Servlet可以使用反射机制来调用方法。
通过获取方法对象,然后通过方法对象调用方法来实现对请求的处理和生成响应。
反射方式调用方法可以在运行时动态地调用不同的方法。
五、动态代理方式调用Servlet可以使用动态代理来调用方法。
通过创建一个代理对象,然后通过代理对象调用方法来实现对请求的处理和生成响应。
动态代理方式调用方法可以在方法调用前后进行一些额外的处理。
六、注解方式调用Servlet可以使用注解来调用方法。
通过在方法上添加注解,然后通过注解来调用方法来实现对请求的处理和生成响应。
注解方式调用方法可以简化代码,并提高代码的可读性。
以上是几种常见的在Servlet中调用方法的方式,每种方式都有其适用的场景和特点。
在实际开发中,可以根据具体的需求和情况选择合适的方式来实现对请求的处理和生成响应。
总结一下,Servlet中调用方法是常见的操作,可以通过普通方法调用、继承方式调用、接口方式调用、反射方式调用、动态代理方式调用、注解方式调用等多种方式来实现。
servlet、javabean创建和使用方法

servlet、javabean创建和使用方法Servlet是一种用于处理HTTP请求的Java应用程序框架。
它是Java Web 开发中的核心组件之一,能够通过Servlet容器将HTTP请求转发给服务器,并对服务器返回的响应进行处理。
JavaBean是Java中用于描述对象属性的一种数据类型。
JavaBean是一种封装性较高的对象,可以通过Java编程语言直接访问和操作。
在Servlet中,JavaBean是一种重要的数据存储方式,可以将Web应用程序中的数据存储在服务器端,以便更好地管理和操作数据。
下面是创建和使用Servlet和JavaBean的一般步骤:1. 创建Servlet:在Web应用程序的根目录下创建Servlet的Java文件,通常命名为`servlet.java`。
在Servlet的Java文件中,需要定义Servlet的接口和实现类。
接口定义Servlet的响应和处理逻辑,实现类则具体实现接口。
2. 创建JavaBean:在Web应用程序的根目录下创建JavaBean的Java文件,通常命名为`javabean.java`。
在JavaBean的Java文件中,需要定义JavaBean 的属性和方法。
属性是Servlet接收的数据,方法是Servlet处理数据的方法。
3. 创建Servlet容器:在Web应用程序的根目录下创建Servlet容器的Java 文件,通常命名为`servlet-api.java`。
在Servlet容器的Java文件中,需要定义Servlet容器的接口和实现类。
4. 创建Servlet调用:在Web应用程序的HTML页面中,需要使用Servlet容器提供的API来调用Servlet。
例如,可以使用`<servlet>`标签来引用Servlet,然后使用`<servlet-name>`属性来指定Servlet的名称。
5. 编写Servlet代码:在Servlet的接口和实现类中,需要编写具体的响应和处理逻辑。
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是Java编写的服务器端程序,用于处理客户端的请求并生成响应。
它是JavaEE(Java Enterprise Edition)规范的一部分,可以在支持Servlet规范的Web 服务器上运行。
Servlet工作原理可以概括为以下几个步骤:1. 客户端发起请求:当用户在浏览器中输入URL或点击链接时,会发送HTTP 请求到Web服务器。
2. Web服务器接收请求:Web服务器接收到客户端的请求后,会根据URL将请求发送给相应的Servlet。
3. Servlet容器加载Servlet:Servlet容器(如Tomcat)负责加载Servlet并创建Servlet实例。
Servlet容器是Web服务器的一部分,负责管理Servlet的生命周期和处理Servlet的请求。
4. Servlet初始化:在Servlet实例创建后,容器会调用其init()方法进行初始化。
在初始化阶段,可以进行一些必要的配置,如读取配置文件、建立数据库连接等。
5. 处理请求:一旦Servlet初始化完成,容器会调用其service()方法来处理客户端的请求。
service()方法根据请求的类型(GET、POST等)调用相应的doGet()、doPost()等方法进行处理。
6. 生成响应:在处理请求的过程中,Servlet可以通过调用response对象的方法生成响应内容。
可以设置响应的状态码、头部信息和正文内容。
7. 响应发送给客户端:当Servlet生成完响应后,容器会将响应发送给Web服务器,然后Web服务器将其传输给客户端。
8. Servlet销毁:当Web服务器关闭或重新加载Web应用时,容器会销毁Servlet实例。
在销毁之前,容器会调用Servlet的destroy()方法执行一些清理工作。
Servlet工作原理的关键是Servlet容器的管理和调度。
Servlet容器负责接收请求、加载Servlet、调用Servlet的方法、生成响应并发送给客户端。
Servlet菜鸟教程
Servlet菜鸟教程Servlet是Java编程语言的一种标准扩展,用来创建基于Web的应用程序。
它是一个服务器端的Java应用程序,可以接收来自客户端的请求,并生成响应。
在本教程中,我们将介绍Servlet的基本概念、工作原理以及如何使用它来开发Web 应用程序。
1. Servlet的基本概念。
Servlet是Java编程语言的一种标准扩展,它运行在Web服务器上,用来处理客户端的请求并生成响应。
Servlet通常用来处理HTML表单提交、响应HTTP请求以及与数据库交互等任务。
与传统的CGI程序相比,Servlet具有更高的性能和可移植性。
2. Servlet的工作原理。
当客户端发送一个HTTP请求时,Web服务器会将请求交给Servlet容器来处理。
Servlet容器会根据请求的URL找到对应的Servlet,并调用它的service()方法来处理请求。
在service()方法中,Servlet可以读取请求的参数、执行业务逻辑并生成响应。
最后,Servlet容器会将生成的响应发送给客户端。
3. 开发Servlet应用程序。
要开发一个Servlet应用程序,首先需要创建一个Java类,然后让它继承自javax.servlet.http.HttpServlet类。
接着,需要重写doGet()或doPost()方法来处理客户端的请求,并生成响应。
最后,将编译后的Servlet类部署到Web服务器上,并配置URL映射,使得客户端可以访问到它。
4. Servlet的生命周期。
Servlet的生命周期包括初始化、服务和销毁三个阶段。
在初始化阶段,Servlet 容器会调用init()方法来初始化Servlet实例。
在服务阶段,Servlet容器会调用service()方法来处理客户端的请求。
在销毁阶段,Servlet容器会调用destroy()方法来销毁Servlet实例。
开发人员可以重写这些方法来实现自定义的初始化和销毁逻辑。
javaWeb使用servlet并且连接数据库向数据库插入数据
javaWeb使⽤servlet并且连接数据库向数据库插⼊数据1.打开myeclipse,创建⼀个web项⽬。
2.在index.jsp (在WebRoot下⾯)页⾯的body⾥⾯加⼊ 如下代码:<div align="center"><form action="servlet/LoginServlet" method="post"> <!--处理表单的servlet ,需要替换成⾃⼰的servlet,在下⾯创建的 --><table><tr><td>账号:<input name="userName" type="text"/></td></tr><tr><td>密码:<input name="userPassword" type="password"/></td></tr><tr><td ><input type="submit" value="登陆"/><input type="reset" value="取消"/></td></tr></table></form></div>3.创建servlet。
(1)点击src——右键——new——package——输⼊包名字(2)点击刚创建的包—右键——new——servlet——输⼊名字—finish。
打开WebRoot——WEB——INF——打开web.xml,可以看见如下信息,myeclipse⾃动为我们⽣成了servlet的配置<servlet><description>This is the description of my J2EE component</description><display-name>This is the display name of my J2EE component</display-name><servlet-name>LoginServlet</servlet-name><servlet-class>com.hck.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/servlet/LoginServlet</url-pattern></servlet-mapping>我的index.jsp⾥⾯表单<form action="servlet/LoginServlet" method="post"> action⾥⾯的值就是和和这个配置⾥⾯的蓝⾊部分⼀致。
javaee api 中文手册
JavaEE API 中文手册一、介绍JavaEE(Java Enterprise Edition)是Java平台上用于开发企业级应用程序的一系列API的集合。
它提供了许多标准的、通用的企业级应用程序开发的API接口,使得开发人员可以更加方便地构建可伸缩、可靠和安全的应用程序。
本文将全面介绍JavaEE API,并提供对各个API的详细解释和使用示例。
二、Servlet API1. 概述Servlet API是JavaEE中用于处理HTTP请求和生成HTTP响应的标准API。
它提供了一种用于生成动态内容的通用方法,并可以与Web服务器进行交互。
2. 核心接口Servlet API包含了一些核心的接口,如下:•Servlet:Servlet是与客户端交互的Java类。
它处理来自客户端的请求,并生成相应的响应。
开发人员需要实现这个接口来创建自己的Servlet。
•ServletRequest:ServletRequest是Servlet请求对象的抽象表示。
它提供了访问请求参数、请求头和其他与请求相关的信息的方法。
•ServletResponse:ServletResponse是Servlet响应对象的抽象表示。
它提供了向客户端发送响应的方法,如发送数据、设置响应头等。
3. 使用示例下面是一个简单的Servlet示例,展示如何接收请求并生成响应:import javax.servlet.*;import javax.servlet.http.*;import java.io.IOException;import java.io.PrintWriter;public class HelloWorldServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse respo nse) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<html>");out.println("<head><title>Hello World</title></head>");out.println("<body>");out.println("<h1>Hello World!</h1>");out.println("</body></html>");}}该示例中,我们创建了一个继承自HttpServlet的Servlet类,并重写了doGet方法来处理GET请求。
使用eclipse工具开发servlet步骤
使用eclipse工具开发servlet步骤
以下是使用 Eclipse 工具开发 Servlet 的步骤:
1. 打开 Eclipse IDE,并创建一个新的 Web 项目。
2. 在项目中创建一个新的 Java 类,并选择继承 javax.servlet.Servlet 接口。
3. 在类中实现 doGet 或 doPost 方法,根据需要处理 HTTP 请求。
4. 在 doGet 或 doPost 方法中编写逻辑,获取请求参数、处理请求并生成响应。
5. 如果需要使用数据库或其他外部资源,可以使用 JDBC 或其他相关技术进行集成。
6. 在 Eclipse 中配置 Tomcat 服务器,将项目部署到 Tomcat 上。
7. 启动 Tomcat 服务器,在浏览器中输入相应的 URL 访问 Servlet。
8. 使用 Eclipse 的调试功能调试 Servlet,检查变量的值、控制流程等。
9. 对 Servlet 进行测试,确保其正确性和稳定性。
10. 根据需要添加其他方法,如 doPut 和 doDelete,以处理不同类型的请求。
11. 可以使用过滤器、监听器等来增强 Servlet 的功能。
12. 最后,将开发完成的 Servlet 打包部署到生产环境中。
这是一个基本的使用 Eclipse 开发 Servlet 的步骤概述。
根据具体的需求和项目要求,可能会有一些额外的步骤或配置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
手动开发servlet配置三个环境变量(用于查看错信息):JA V A_HOME=%JA V A_HOME%CA TALINA_BASE=%TOMCA T_HOME%CA TALINA_HOME=%TOMCA T_HOME%CLASSPA TH=%TOMCA T_HOME%\lib一:建立web资源基本目录结构:1:“%tomcat_home%/webapps/”目录和“虚拟目录”管理了所有的web资源,在“%tomcat_home%/webapps/”目录下创建一个名为my-website 的项目图1,站点资源目录1),建立文档目录(实际目录)F:\web2),将实际目录注册为虚拟目录,通过编辑%tomcat_home%/conf/server.xml文件,①,原文件<Host></Host>元素<Host name="localhost" appBase="webapps"unpackW ARs="true" autoDeploy="true"xmlV alidation="false" xmlNamespaceA ware="false"><!-- SingleSignOn valve, share authentication between web applicationsDocumentation at: /docs/config/valve.html --><!--<V alve className="org.apache.catalina.authenticator.SingleSignOn" />--><!-- Access log processes all example.Documentation at: /docs/config/valve.html --><!--<V alve className="org.apache.catalina.valves.AccessLogV alve"directory="logs"prefix="localhost_access_log." suffix=".txt" pattern="common"resolveHosts="false"/>--></Host>②,在<Host></Host>元素中添加<Context>子元素图2,在默认主机中添加虚拟目录③,修改后的%tomcat_home%\conf\server.xml文件中的<Host></Host>元素:<Host name="localhost" appBase="webapps"unpackW ARs="true" autoDeploy="true"xmlV alidation="false" xmlNamespaceA ware="false"><!-- SingleSignOn valve, share authentication between web applicationsDocumentation at: /docs/config/valve.html --><!--<V alve className="org.apache.catalina.authenticator.SingleSignOn" />--><!-- Access log processes all example.Documentation at: /docs/config/valve.html --><!--<V alve className="org.apache.catalina.valves.AccessLogV alve" directory="logs"prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>--><!-- 在此处添加默认主机的虚拟目录,使用Context元素--><!-- Context元素的path属性指定了资源根目录(虚拟目录)--><!-- 如:path=""表示资源根目录为:http://localhost:8080/ --><!-- 如:path="/myweb2"表示资源根目录为:http://localhost:8080/myweb2 --> <!-- Context元素的docBase属性指定了文档根目录(实际目录),也即web站点应该存放的位置--><!-- 如:docBase="F:\web"表示文档根目录为:F:\web --><!-- 如:docBase="F:\"表示文档根目录为:F:\ --><!--<Context path="/myweb2" docBase="F:\web" /><Context path="/transport" docBase="E:\" />--><Context path="" docBase="F:\web" /></Host>④,可能的错误:当文件中含有汉字时(不论是代码还是注释),由于保存过程中可能保存为ANSI(系统默认编码:GB-2312),启动Tomcat过程中启动窗口可能一闪而过,看清窗口中错误提示的方法是a,修改%tomcat_home%\bin\catalina.bat文件,按ctrl+F找到%_RUNJA V A%前面的start_"Tomcat"_(“_”表示空格),将start_"Tomcat"_删除打开catalina.bat删除start_"Tomcat"_保存b,配置文章开头所写的三个环境变量JA V A_HOME=%JA V A_HOME%CA TALINA_BASE=%TOMCA T_HOME%CA TALINA_HOME=%TOMCA T_HOME%CLASSPA TH=%TOMCA T_HOME%\libc,将%tomcat_home%\bin\startup.bat文件拖入cmd窗口中,按回车d,显示错误信息图4,错误提示窗口截图e,特别注意第一条信息(红字注明)——非法的2字节utf-8序列Microsoft Windows [版本6.1.7601]版权所有(c) 2009 Microsoft Corporation。
保留所有权利。
C:\Users\Y eLin>E:\JavaProgramAndCases\ch01java概述\tomcat-6.0.18\bin\startup.batUsing CA TALINA_BASE: E:\JavaProgramAndCases\ch01java概述\tomcat-6.0.18Using CA TALINA_HOME: E:\JavaProgramAndCases\ch01java概述\tomcat-6.0.18Using CA TALINA_TMPDIR: E:\JavaProgramAndCases\ch01java概述\tomcat-6.0.18\temp Using JRE_HOME: C:\Program Files\Java\jdk1.6.0_262011-9-27 8:18:14 org.apache.catalina.startup.Catalina load警告: Catalina.start using conf/server.xml:.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.at.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684) at .apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:369)at.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742) at.apache.xerces.internal.impl.XMLEntityScanner.scanData(XMLEntityScanner.java:12 56)at.apache.xerces.internal.impl.XMLScanner.scanComment(XMLScanner.java:756) at.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanComment(X MLDocumentFragmentScannerImpl.java:1040)at.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContent Driver.next(XMLDocumentFragmentScannerImpl.java:2953)at.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScanne rImpl.java:648)at.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(X MLDocumentFragmentScannerImpl.java:511)at.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.jav a:808)at.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.jav a:737)at .apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)at.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:120 5)at.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl. java:522)at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1644)at org.apache.catalina.startup.Catalina.load(Catalina.java:516)at org.apache.catalina.startup.Catalina.load(Catalina.java:550)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at ng.reflect.Method.invoke(Method.java:597)at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)2011-9-27 8:18:15 org.apache.catalina.startup.Catalina load警告: Catalina.start using conf/server.xml:f,重新打开%tomcat_home%\conf\server.xml文件,另存为server.xml,并将编码更改为utf-8覆盖保存,g,如果%tomcat_home%\conf\server.xml文件中没有中文,使用ANSI编码保存和使用utf-8编码都可以(不会报错),h,但强烈建议使用utf-8编码保存3)检验——开启服务器,打开浏览器访问资源:http://localhost:8080/xxx/index.html(path=””时)访问资源:http://localhost:8080/myweb2/xxx/index.html(path=”/myweb2”时)①html测试代码:<html><body><p>虚拟目录中资源<p></body></html>②乱码出现原因:编码方式与解码方式不同③乱码解决方案:方法一(临时方案):临时修改浏览器的解码,浏览器默认的解码为:ANSI(GB-2312),通过右击网页-》编码-》Unicode,只要将解码方式更改为html保存时使用的编码即可(这是一个原则问题,只要编码与解码方式相同就不会出现乱码)方法二(建议方案):通过html文件指定浏览器使用何种解码解析html文档,html测试代码更改为(添加红色head标签):该标签将指示浏览器使用何种解码解析它所在的html文档,方法二的最重要的一点是:head标签指示的解码(charset属性的值)与文档的编码(保存时使用的编制码)相一致!!!<html><head><meta http-equiv="content-Type" content="text/html; charset=utf-8" /> </head><body><p>虚拟目录中资源<p></body></html>2:tomcat只能管理到一个根目录(根目录包括:默认根目录%tomcat_home%\webapps\以及若干虚拟目录,根目录也称为项目)1).也就是说当请求资源为:http://localhost:8080/时只会出现一个页面,而这个页面正是根目录下的index.html文件,如果在一个主机中用两个名称相同的根目录(或者项目)以下两种情况都是属于配置了两个相同名称的根目录(或者项目)①.文档路径相同,资源路径也相同<Context path="/ssi" docBase="E:\SPACE\JSP_APP\ssi\webroot" debug="5" reloadable="true" crossContext="true"></Context><Context path="/ssi" docBase="E:\SPACE\JSP_APP\ssi\webroot" debug="5" reloadable="true" crossContext="true"></Context>②.文档路径不同,资源路径相同<Context path="" docBase="E:\web" /><Context path="" docBase="F:\web" />③.只要资源路径相同,就会报错(查看以下截取的错误信息——红色注明)Microsoft Windows [版本6.1.7601]版权所有(c) 2009 Microsoft Corporation。