实现要求
如果要开发一个可以处理HTTP请求的Servlet程序,肯定是要继承HttpServlet类,而且在自定义的Servlet类中至少还有覆写HttpServlet类中提供的doGet()方法
protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException
我的项目结构如下:
简单的代码:
package com.jmi.servletdemo;
import java.io.*;//基本包写在扩展包之间
import javax.servlet.* ;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.* ;
/**
* Servlet implementation class HelloServlet
*/
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HelloServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter() ;
out.println("<html>") ;
out.println("<head><title>MLDNJAVA</title></head>") ;
out.println("<body>") ;
out.println("<h1>HELLO WORLD</h1>") ;
out.println("</body>") ;
out.println("</html>") ;
out.close() ;
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
web.xml文件配置
第一个servlet程序就已经开发完成了,基本上也就只剩下半口气了。那么接下来要进行配置,这个配置就是映射的配置。即:每一个servlet都必须通过web.xml文件进行映射的路径指定。
<servlet>
<servlet-name>hello</servlet-name>//与servlet-mapping相对应
<servlet-class>com.jmi.servletdemo.HelloServlet</servlet-class>//包.类名称
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloServlet</url-pattern>//指定访问路径
</servlet-mapping>
但是,此时的Tomcat必须重新启动以加载新的配置
现在的程序主要功能是让servlet作为一个显示层的操作,但是Servlet基本上不会作为输出页面使用,因为实在是太不方便了,servlet将作为一些中间的控制逻辑层使用。
对于servlet本身还有一个最有意思的特点,即:可以为一个servlet配置多个映射名称,只需要配置多个即可
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.jmi.servletdemo.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello.asp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello.zwk</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/zwk/*</url-pattern>
</servlet-mapping>
一个servlet可以映射多个名称,尤其是"*"这个路径,表示任意的名称均可。
以上是我在视频学习后做的一点总结,大神勿喷。