• 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>
    


     

    运行结果:

  • 相关阅读:
    关于异步取消线程以及异步销毁锁的探讨
    pthread_mutex_init & 互斥锁pthread_mutex_t的使用(转)
    Qt设置全局的widget的stylesheet
    浅析pthread_cond_wait(转)
    575 Skew Binary
    HDU 1229 还是A+B
    10370
    10300
    UVA 10071 Problem B Back to High School Physics
    UVA 10055 Problem A Hashmat the brave warrior
  • 原文地址:https://www.cnblogs.com/riskyer/p/3395212.html
Copyright © 2020-2023  润新知