servlet网络拓扑图:
servlet快速入门:
开发servlet的三种方法:(非eclipse开发)
1、实现servlet接口:
在之前部署的虚拟目录mywebside的WEB-INF文件夹下新建classes文件夹(放servlet类文件),和一个lib文件夹,
以及web.xml配置文件(可从tomcat安装目录,D:\Tomcat6.0\webapps\ROOT\WEB-INF下复制里面的web.xml文件,内容稍微改下(去主页文件配置))
在classes文件夹下先建MyFirstServlet.java文件,然后编写servlet:
package com.zzx;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyFirstServlet implements Servlet
{ //init用于初始化servlet,就是把servlet装载到内存,该方法只会被调用一次
public void init(ServletConfig config)throws ServletException
{
}
//getServletConfig永遇得到ServletConfig对象
public ServletConfig getServletConfig()
{
return null;
}
//service是服务函数,我们的业务逻辑代码就是写在这里的,浏览器每次http请求,该函数就会被调用
public void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException
{
System.out.println("hello word!" + new java.util.Date());//在控制台输出
res.getWriter().println("hello word!" + new java.util.Date().toLocaleString());//在浏览器输出,getWriter获得通向浏览器的字符流
}
//getServletInfo函数得到servlet的配置信息
public java.lang.String getServletInfo()
{
return null;
}
//销毁该servlet,从内存中清除掉,该函数在整个过程中被调用一次
public void destroy()
{
}
// main函数可不写
public static void main(String args[])
{
}
}
编译:
当然要编译成功首先要配置环境变量,让程序能找到servlet-api.jar
当然有了servlet类还得部署servlet才能通过使服务器通过编写的servlet响应浏览器请求
在web.xml中部署:
<servlet-name>指定该servlet的名字(可以随便取),<servlet-class>指定该servlet的class文件放在哪个包下面
这里写com.zzx.MyFirstServlet(不带.class)
<url-pattern>指定通过浏览器如何访问servlet,这里的' /zzx '表示在浏览器输入:http://localhost:8081/mywebside/zzx
来访问该servlet
(浏览器资源定位到zzx,通过web.xml文件找到zzx对应的servlet名字,即MyFirstServlet,然后再通过<servlet>节点中的元素找到该servlet名对应的class文件,然后加载到Java虚拟机运行,最后将结果打包返回给浏览器)
2、实现GenericServlet接口:
GenericServlet接口已经实现了init(),ServletConfig(),getServletInfo(),destroy(),
所以只用实现servlet()方法。
在classes文件夹下创建MyGenericServlet.java文件
package com.zzx;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyGenericServlet extends GenericServlet
{
public void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException
{
System.out.println("hello word!" + new java.util.Date());
res.getWriter().println("hello word!" + new java.util.Date().toLocaleString());
}
}
同样部署servlet:
通过http://localhost:8081/mywebside/xin053 访问
3、继承HttpServlet类:(90%公司是通过此方法开发的,现在的主流)
只需重写doGet()和doPost()方法
在classes文件夹下创建MyHttpServlet.java文件
package com.zzx;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyHttpServlet extends HttpServlet
{//在HttpServlet中,设计者对post和get提交分别处理
protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,java.io.IOException
{
resp.getWriter().println("I am doing get()" + req.getParameter("username"));
}
protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,java.io.IOException
{
resp.getWriter().println("I am doing post() post name = " + req.getParameter("username"));
}
}//其实doGet()和doPost()最终也是去调用service()方法
同样部署servlet:
通过http://localhost:8081/mywebside/xin访问
get提交于post提交: