servlet是使用Java servlet应用程序设计接口(API)及相关类和方法的Java程序,除了Java servlet API,它还可以用于扩展和添加API的Java类软件的包。servlet主要用于处理客户端传来的HTTP请求,并返回一个响应。通常所说的servlet就是指httpservlet,能够处理的请求有doGet()、doPost()和service()等方法。
实现过程
最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。这个过程为:
1) 客户端发送请求至服务器端;
2) 服务器将请求信息发送至 Servlet;
3) Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
4) 服务器将响应返回给客户端。
servlet的生命周期
加载
实例化
调用init()方法初始化该 Servlet
提供服务。service()根据请求方法不同调用doGet() 或者 doPost()
销毁。
destroy():当web服务器和容器关闭时会自动调用HttpServlet.destroy()方法关闭所有打开的资源,并执行一些关闭前的处理。
servlet的配置
在web.xml文件中进行配置:
使用<servlet-name>、<servlet-class>、<servlet-mapping>等标签来进行配置
doGet()和doPost()
public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { System.out.println("This is doGet"); resp.setContentType("text/html;charset=UTF-8"); String loginId = req.getParameter("loginId"); req.setAttribute("loginId", loginId); req.setAttribute("loginName", "nttdata"); req.getRequestDispatcher("/response.jsp").forward(req, resp); }public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { doGet(req, resp); }
web容器会自动按照请求类型调用servlet提供的方法,若是GET类型的请求就将分给doGet()方法处理,同理若是POST类型就发给doPost()处理,但是一般多是用doGet()方法,如上,即使是使用了doPost()但是最终还是调用上面的doGet()。
页面转发
servlet中实现页面转发只要是利用RequestDispatcher接口实现的。其包括forward()的方法:
forward()方法用于将请求转发到服务器上的另一个资源
如上代码,用forward()方法将页面请求转发到了response.jsp页面