学习笔记(3)-----servlet的三种开发方式

来源:互联网 发布:c语言比较字符串相等 编辑:程序博客网 时间:2024/06/09 18:09

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提交:


0 0