Servlet是很重要的,在我现在的印象中,Servlet要重要过JSP,如果要学JSP,首先应该学Servlet,如果你去借或者是买一本关于JSP的书籍,里面在讲JSP之前没有讲到Servlet,那这本书就不用买了,因为你根本学不到JSP的内涵。
我说,其实JSP就是Servlet,话有点过,JSP比Servlet还是有很多的优越性的,可是JSP的优越性是建立在一个很好的Servlet容器或者说服务器之上的,因为JSP仍然是被解析成Servlet然后才被执行的,所以我不负责任的说一句:JSP就是Servlet。(好像SUN公司对JSP付出的精力都白费了)
Servlet是一个Java类,可以处理http请求,返回html代码流,这就是Servlet的基本原理,当然Servlet能做的远远不止这些,现在的Servlet大多和JavaBean结合在一起,对B/S程序的业务逻辑进行控制。
还是来看一个最简单的Servlet,(首先新建一个叫做helloworld的web应用)代码如下:
import javax.servlet.http.*;
public class hello extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException
{
res.setContentType("text/html");
res.setCharacterEncoding("GB2312");
PrintWriter out = res.getWriter();
out.print("");
out.print("");
out.print("HelloWorld!");
out.print("");
out.print("");
}
public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException
{
doGet(req,res);
}
}
把这个类保存为hello.java,编译后(需要将TOMCAT_HOME\lib文件夹下的servlet-api.jar包加入到classpath变量中,参考前几篇文章),放在web应用的WEB-INF\classes文件夹下(没有就建一个),然后配置web.xml文件(没有就去ROOT这个Web应用下拷贝一个),加入如下代码:
<servlet-class>hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
解释一下:servlet-mapping这个标签下面的url-pattern标签里面的内容记录的是通过什么地址来访问,比如,你这里写/hello,那么在浏览器中输入http://localhost:8080/helloworld/hello,这样来请求,而这里面的servlet-name则是你自己随便起的,但是(很重要),一定要和某一个servlet标签中的servlet-name一致,否则没有意义,而servlet这个标签中的servlet-class则表示用什么类来完成hello这个请求。
配置好以后,在浏览器中请求一下就可以看到HelloWorld的字样了。
关于Servlet是如何实现这些的,下一篇文章再说。