Servlet
一、什么是servlet
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。
它担当客户请湂(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间幂。
Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
二、Servlet作用
Servlet规范通过规定一个编程的框架来达到扩幕服务器功能的目的,采用请湂-响应模式提供基于Web的服务。当客户机发送请湂至服务器时,服务器帆请湂信息转发给
Servlet,Servlet处理请湂并生成响应内容并帆其传给Web服务器,然后再由Web服务器帆响应返回给客户端。
安全性,Servlet也有类型检查的特性,并且利用Java的垃圾回收与没有指针的设计,使得Servlet避免内存管理的问题。由于在Java的异常处理机制下,Servlet能够安全地处理各种错误,不会因为发生程序上逻辑错误而导致整体服务器系统的崩溃。例如,某个Servlet发生除以零或其他不合法的运算时,会抛出一个异常让服务器处理,如记录在Log日志中。
三、创建Servlet的过程
四、第一个Servlet例程
FirstServlet.java文件(第一种继承方式)
package servlet; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FirstServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("-------------"+request.getCharacterEncoding());//编码 System.out.println("------------"+request.getContentType());//类型 System.out.println("-------------"+request.getContextPath());//路径 System.out.println("-------------"+request.getRemoteAddr());//地址 System.out.println("-------------"+request.getHeader("Referer"));//头文件 System.out.println("-------------"+request.getHeader("Accept-Encoding")); resJson(request, response); } public void resXml(HttpServletRequest request, HttpServletResponse response) throws IOException{ response.setHeader("Content-Type","application/xml;charset=UTF-8");//改类型 response.setHeader("Content-encoding", "UTF-8"); SimpleDateFormat d=new SimpleDateFormat("yyyy-MM-dd");//改时间 String st=d.format(new Date()); response.setHeader("Date",st); PrintWriter out = response.getWriter(); out.println("<?xml version='1.0' encoding='UTF-8'?>"); out.println("<四大名著>"); out.println("<红楼梦>"); out.println("<作者>"); out.println("曹雪芹"); out.println("</作者>"); out.println("</红楼梦>"); out.println("</四大名著>"); out.flush(); out.close(); } public void resJson(HttpServletRequest request, HttpServletResponse response) throws IOException{ response.setHeader("Content-Type","application/json;charset=UTF-8"); response.setHeader("Content-encoding", "UTF-8"); SimpleDateFormat d=new SimpleDateFormat("yyyy-MM-dd"); String st=d.format(new Date()); response.setHeader("Date",st); PrintWriter out = response.getWriter(); out.println("[{name:'程昱',sex:'男'},{name:'程昱1',sex:'男'}]"); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
SendServlet.java文件(第二种继承方式)
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SendServlet extends GenericServlet{
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
servlet加载web.xml中
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <!-- 自动生成的编码 <servlet> <servlet-name>FirstServlet</servlet-name> <servlet-class>servlet.FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FirstServlet</servlet-name> <url-pattern>/servlet/FirstServlet</url-pattern> </servlet-mapping> --> <servlet> <servlet-name>xxx</servlet-name> <servlet-class>servlet.FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>xxx</servlet-name> <url-pattern>/xx.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>MyHtml.html</welcome-file> </welcome-file-list> </web-app>
MyHtml.html文件
<!DOCTYPE html>
<html>
<head>
<title>MyHtml.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<a href="./xx.do">链接</a>
</body>
</html>
运行结果: