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>


 

运行结果:

原文地址:https://www.cnblogs.com/riskyer/p/3395212.html