Servlet是sun公司开发的用于动态web开发的技术。
要开发Servlet就要实现Servlet接口。接口中有五个方法:
destroy()
getServletConfig()
getServletInfo()
init(ServletConfig config)
service(ServletRequest req,ServletResponse res)
要重写。
为了简化代码,开发中通常写一个generic servlet extends javax.servlet.GenericServlet
或者写一个 Http servlet extends javax.servlet.http.HttpServlet。
一、入门实例Hello World。
1、在webapps目录下新建文件夹 JavaWebChuan
2、在Tomcat6.0\webapps\JavaWebChuan目录下 新建 三个文件夹WEB-INF\classes\cn\itcast
在最后一个文件夹里新建java文件: FirstServletDemo.java 并编译成class 文件
package cn.itcast;
import java.io.*;
import javax.servlet.*;
public class FirstServletDemo extends GenericServlet{
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
OutputStream out =res.getOutputStream();
out.write("Hello,World!!!".getBytes());
}
}
3、配置web.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>FirstServletDemo.java</servlet-name>
<servlet-class>cn.itcast.FirstServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServletDemo.java</servlet-name>
<url-pattern>/FirstServletDemo</url-pattern>
</servlet-mapping>
</web-app>
打开Tomcat,在浏览器中输入http://localhost:8088/JavaWebChuan/FirstServletDemo(我的Tomcat端口号为8088)
可以看见:
Hello,World!!!
二、Servlet入门实例分析(servlet基础原理)
1、为什么这样做就可以在浏览器中访问到呢?
因为配置文件有说明。
<servlet-mapping>
<servlet-name>FirstServletDemo.java</servlet-name>
<url-pattern>/FirstServletDemo</url-pattern>
</servlet-mapping>
这个是映射文件,把那个servlet(即一个java类)映射到一个地址http://localhost:8088/JavaWebChuan/FirstServletDemo。
2、那么输出是怎样产生的呢?
分析FirstServletDemo.java ,再查看servlet api可以知道:
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
方法中 传递了 ServletRequest对象req,和ServletResponse对象res。
req用来请求服务器,res用来响应客户请求 。
查看ServletResponse的getOutputStream()方法发现其返回值是ServletOutputStream类,而ServletOutputStream继承OutputStream类。
即可以调用write方法,输出数据。