[Java Web] Servlet
Posted arseneyao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java Web] Servlet相关的知识,希望对你有一定的参考价值。
一、概述
Servlet是使用Java编写的服务端程序,主要功能是交互式的浏览和修改数据,从而生成动态的Web内容。
Servlet运行需要特定的容器,例如由Tomcat为Servlet提供基本运行环境。
当Web服务器接收到HTTP请求时,会将该请求交给Servlet容器。容器首先对请求的URL进行解析,并根据web.xml找到相应的Servlet,如果该Servlet为第一次访问,则调用则初始化之。之后将request和respone传递给该Servlet。Servlet通过request获取客户端的请求信息,处理完成后将返回的信息放入respone。之后控制权回到Web服务器,返回HTTP响应到客户端。
Servlet的状态由其容器来维护,生命周期从服务器运行开始直至关闭,包括加载、初始化、运行和销毁阶段。
二、常用接口及类
- service:当Web服务器接收到HTTP请求,就会直接调用该方法。相当于Servlet应用程序的入口。
- HttpServlet:提供处理HTTP协议框架的抽象类。
- HttpSession:代表HTTP服务端与客户端会话的接口。
- ServletConfig:封装了Servlet的配置信息,在Servlet初始化期间被传递。
- ServletContext:Servlet环境对象,Servlet引擎通过该对象向Servlet传递环境信息。
三、创建与调用
//MyServlet.java import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.setCharacterEncoding("GB2312"); PrintWriter out = resp.getWriter(); String content = "<DOCTYPE html>" + "<html>" + "<head>" + "<title>servlet</title>" + "</head>" + "<body>" + "servlet has been created and configured" + "</body>" + "</html>"; out.println(content); out.flush(); out.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } } //web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern> </servlet-mapping> </web-app>
获取Servlet信息。
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.setCharacterEncoding("UTF-8"); PrintWriter out = resp.getWriter(); //获取HTTP头部信息 Enumeration enumeration = req.getHeaderNames(); while (enumeration.hasMoreElements()) { String name = (String) enumeration.nextElement(); String value = req.getHeader(name); out.println(String.format("%s = %s<br/>", name, value)); } //获取请求对象信息 out.println(req.getMethod() + "<br/>"); out.println(req.getProtocol() + "<br/>"); out.println(req.getRemoteAddr() + "<br/>"); out.println(req.getRequestURL() + "<br/>"); out.println(req.getRequestURI() + "<br/>"); //获取参数信息 out.println(req.getParameter("user") + "<br/>"); out.println(req.getParameter("pass") + "<br/>"); out.flush(); out.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
JSP调用Servlet。
//方法一 <form action="MyServlet" method="post"> ... </form> //方法二 <a href="MyServlet?user=root&pass=0000">Call MyServlet</a>
以上是关于[Java Web] Servlet的主要内容,如果未能解决你的问题,请参考以下文章