写Servlet经常要与XML打交道,XML的设置曾一度是一个困扰今天终于搞得差不多明白了!
源于http://topic.csdn.net/t/20050612/10/4076412.html 这份帖子上讲到的关于STRUTS中对XML的设置。
下面是STRUTS里的一个Servlet:
<servlet>
<servlet-name>action</servlet-name> //给编写的Servlet命名
<servlet-class>
org.apache.catalina.servlets.InvokerServlet //类所在的包
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name> //Servlet的命名
<url-pattern>*.do</url-pattern>
//这个是站点里的所有form都用 form的名称.do 这样的映射来访问servlet
</servlet-mapping>
下面是一个详细的例子来阐述通过设置XML来访问Servlet
先建立一个类名字为web.servlet 注web包下的servlet类
package web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class servlet extends HttpServlet{
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
doPost(arg0,arg1);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
ServletOutputStream out=response.getOutputStream();
out.println("<html>");
out.println("<body>");
out.println("TEST WOW YEAH!!!!!");
out.println("</body>");
out.println("</html>");
}
}
再建立一个XML文件,目录结构如下图:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>web.servlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/show.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>action</servlet-name>//对自己编写的servlet命名
<servlet-class>web.servlet</servlet-class>//自己编写的servlet的所在包(或者说位置)
<init-param>
<param-name>debug</param-name>//参数名称(注:本程序没用到,只是举个例子)
<param-value>0</param-value>//参数初始值
</init-param>
<load-on-startup>1</load-on-startup>//servlet的启动优先级
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>//映射到action的servlet
<url-pattern>/show.do</url-pattern>//注释①
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
////////////////////////////////////////////////////////////////////////////////////////////
注释①
/show.do 表示在浏览器中输入:http://127.0.0.1:8081/ServletTest/show.do 可以执行action所映射的类
*.do 表示在浏览器中输入:http://127.0.0.1:8081/ServletTest/*.do 可以执行action所映射的类,*这里的表示任意字符
/do 表示在浏览器中输入:http://127.0.0.1:8081/ServletTest/do 可以执行action所映射的类