首页 理论教育JSP实训教程:Servlet编写、部署与调用

JSP实训教程:Servlet编写、部署与调用

【摘要】:Servlet程序的编写、部署firstServlet.java是一个简单的Servlet程序,因为它是HttpServlet类的子类。存放Servlet程序的根目录是在“conf/app-default.xml”配置文件中配置定义的,可参考“实训5——Resin下载、安装、启动与配置”中的“Servlet程序的存放路径配置”。使用“记事本”输入“firstServlet.java”程序并存放在应用目录“Webapps/ROOT/WEB-INF/classes/test”中。图4-15 一个简单的Servlet程序在“resin-web.xml”或“web.xml”文件中,标签<servlet>要先于标签<servlet-mapping>定义。该路径下,甚至是在“.jar”中的serv-let都会在不觉察的情况下被调用。

(1)Servlet程序的编写、部署

firstServlet.java是一个简单的Servlet程序,因为它是HttpServlet类的子类。firstServlet类覆盖了父类的service()方法,该方法由servlet容器调用,使该Servlet自动响应(respond)一个请求(request)。

在service()方法中演示了如何获取JSP内置对象application、session等。

语句“PrintWriter out=response.getWriter();”获取输出流,向请求端发送HTML文档。

在Resin的应用目录(如“webapps/ROOT”)下有子目录“WEB-INF/classes”,这是存放Servlet程序的根目录。存放Servlet程序的根目录是在“conf/app-default.xml”配置文件中配置定义的,可参考“实训5——Resin下载、安装、启动与配置”中的“(4)Servlet程序的存放路径配置”。

使用“记事本”输入“firstServlet.java”程序并存放在应用目录“Webapps/ROOT/WEB-INF/classes/test”中。

firstServlet.java:

978-7-111-38219-5-Chapter04-71.jpg

978-7-111-38219-5-Chapter04-72.jpg

(2)Servlet程序的配置调用

调用“Webapps/ROOT/WEB-INF/classes”下的Servlet程序,要在“Webapps/ROOT/WEB-INF”目录中的文件“web.xml”或“resin-web.xml”中作相应的配置。对于上例,若“web.xml”或“resin-web.xml”的内容是:

978-7-111-38219-5-Chapter04-73.jpg

则在浏览器地址栏中输入:(www.chuimin.cn)

978-7-111-38219-5-Chapter04-74.jpg

或者输入:

978-7-111-38219-5-Chapter04-75.jpg

都可以调用“Webapps/ROOT/WEB-INF/classes/test”目录下的Servlet程序“firstServlet.java”。其显示的页面如图4-15所示。

978-7-111-38219-5-Chapter04-76.jpg

图4-15 一个简单的Servlet程序

在“resin-web.xml”或“web.xml”文件中,标签<servlet>要先于标签<servlet-mapping>定义。标签<servlet>中,属性servlet-class定义Servlet程序实际的包名和类名,属性servlet-name定义代表该Servlet程序的名字,可以是任意的标识符;标签<servlet-mapping>中定义对用户所取的Servlet程序名(属性servlet-name定义)所代表的Servlet程序的URL调用模式(属性url-pattern定义),如上例的“firstServlet.java”程序,它的URL调用模式是:

978-7-111-38219-5-Chapter04-77.jpg

特别地,对于“<servlet-mappingurl-pattern="/servlet/*"servlet-name="in-voker"/>”,“invoker”代表实际的Servlet程序的class名,“/servlet/*”表示它的URL调用模式是在实际的Servlet程序的class名前加上/servlet/,因此,如上例的firstServlet.java程序,它的URL调用模式也可以是:

978-7-111-38219-5-Chapter04-78.jpg

但不建议使用此配置模式,这会造成安全漏洞。该路径下,甚至是在“.jar”中的serv-let都会在不觉察的情况下被调用。