实现要求:
如果要开发一个可以处理HTTP请求的Servlet程序,肯定是要继承HttpServlet这个抽象类,
而且在定义的Servlet类中至少还有覆写HttpServlet类中提供的doGet()方法;
·protected void doGet(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException
可以再此方法中使用request和response对象;
既然是一个类的话,则肯定需要在WEB-INF/classes文件夹中进行保存;
第一个servlet---HelloServlet.java:
package com.lid.servlet;
import javax.servlet.http.*;
import java.io.*;
public class HelloServlet extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
//因为out对象是jsp内置的对象,所以此处不能用out了;
//HttpServletResponse中有个getWriter()来得到PrintWriter流
PrintWriter out=resp.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h3>hello world……</h3>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
第一个servlet程序现在就已经完成了,那么现在就需要就行编译了;
要想编译通过则必须在C:\Program Files\Java\jdk1.6.0_18\jre\lib\ext中加入servlet-api.jar包,
或者将该jar包配置到classpath中去;否则java.servlet包下的所有类或子包中类都不能被访问到;
编译成功后,一个Servlet就正常的开发完了,但是,现在此Servlet并不能被外界访问,此时缺少一个配置,
一个映射的配置;即每一个servlet必须都通过web.xml映射的路径指定;
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.lid.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
然后在浏览器中输入:http://localhost/lid/helloServlet即可访问到该servlet,Servlet之所以保存到现在
并不是用它来显示的(可以看到用servlet来显示相当的麻烦),而是用它来处理一下业务;
PS:javac和java是javase的范畴,而Servlet属于javaEE的范畴,所以需要导入servlet-api.jar包;
PS:为什么要配置servlet的映射呢?
因为servlet是在WEB-INF文件夹下的,该文件夹是安全的只有配置了映射才可以被访问到;