servlet概述
- Servlet是sun公司提供的一门用于开发动态web资源的技术。
-
Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
(1)编写一个Java类,实现servlet接口。 (2)把开发好的Java类部署到web服务器中。 (3)按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet
-
servlet运行过程:
(1)Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。 ②装载并创建该Servlet的一个实例对象。 ③调用Servlet实例对象的init()方法。 ④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。 ⑤WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
IDEA创建第一个servlet程序
- 选中自己的project,打开Project Structure界面》》选中Libraries》》点击"+"并选择java》》选择并选中自己的tomcat/lib/servlet-api.jar》》Apply》》OK
- 通过idea创建servlet,选中项目的src目录,右键选择new
- 创建一个servlet,命名为testServlet
-
创建成功后testServlet.java文件中有一行关键的代码:
@WebServlet(name = "TestServlet") 备注:可以加上具体的urlPattern参数来定义servlet的具体的请求的URL,如下 @WebServlet(name = "TestServlet",urlPatterns = "/test")
- 示例代码:
示例代码分享:
-
关于servlet之http请求的request与response对象:
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays; import java.util.Enumeration; import java.util.Arrays; @WebServlet(name = "testServlet",urlPatterns = "/test") public class testServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //请求头,请求行,请求体 System.out.println("请求行:"); System.out.println("url:"+request.getRequestURL()); System.out.println("uri"+request.getRequestURI()); System.out.println("methord:"+request.getMethod()); System.out.println("querystring:"+request.getQueryString()); System.out.println("addr:"+request.getRemoteAddr()); System.out.println("host:"+request.getRemoteHost()); System.out.println("--------------------"); System.out.println("请求头:"); Enumeration<String> headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()){ String key = headerNames.nextElement(); String value = request.getHeader(key); System.out.println(key+"="+value); } System.out.println("--------------------"); System.out.println("请求体:"); Enumeration<String> params = request.getParameterNames(); while (params.hasMoreElements()){ String key = params.nextElement(); //接收的参数中一般有中文,注意编码 String value = request.getParameter(key); value = new String(value.getBytes("iso-8859-1"),"UTF-8"); System.out.println(key+"="+value); } System.out.println("--------------------"); //开始response //1.二进制流方式输出 response.setContentType("text/html;charset=UTF-8");//一定要做编码的设置,否则浏览器可能输出乱码 //response.getOutputStream().write("中国".getBytes("UTF-8")); //2.字符流方式输出 response.getWriter().write("字符流"); } }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。