**
三种创建servlet的方式(tomcat)三种方法都是javax.servlet里面的
**
-实现 Interface Servlet接口
package cn.hncu.services;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FirstServlet implements Servlet {
@Override
public void destroy() {
System.out.println("destory...");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("innit..."+this);
String name=arg0.getInitParameter("name");
System.out.println(name);
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("service...");
}
}
- 第二种创建Servlet的方式(继承GenericServlet)
- `package cn.hncu.services2;
import java.io.IOException;
import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class SecondServlet extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
String charset=this.getInitParameter("charset");
System.out.println(charset);
req.setCharacterEncoding("utf-8");
String name=req.getParameter("name");
String pwd=req.getParameter("pwd");
System.out.println("name"+name);
System.out.println("pwd"+pwd);
}
//适配器模式的一个知识点:适配器中的init(ServletConfig config)中帮我们把它当中的config对象赋值且调用 一个空参的init()。我们以后应该覆盖空参的init()。因为如果覆盖了这个带参数的,那么就无法实现为它的config对象赋值,由此导致其中使用config对象的方法会出错。
//其实这种方法(调用 一个空参的init()且 该参数方法中什么也没做 )也程序员之间的一种交流方式,告诉我们要覆盖空参的方法,这样它在帮我们做完事情会调用我们的覆盖方法
// @Override
// public void init(ServletConfig config) throws ServletException {
super.init(config);
System.out.println(“init….”+this);
// }
@Override
public void init() throws ServletException {
System.out.println("init...."+this);
}
}
`第三种创建Servlet的方式(继承HttpServlet)
package cn.hncu.services2;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//注意,采用继承HttpServlet的方式写servlet,doGet和doPost这两个方法通过都要覆盖,否则如果doGet方法没覆盖,有get请求时就会出现405错误,不覆盖doPost方法同理。
public class ThirdServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("post");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("get....");
}
}
三种方法的类关系是:HttpServlet继承GenericServlet、GenericServlet实现Servlet