zoukankan      html  css  js  c++  java
  • JAVA基础之Servlet

    个人理解:

      servlet是用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。需要注意的在创建的服务器端的目录和实际上存在差别的,并且访问的时候先是去你新建的XML文件中去找虚拟地址,若是没有的话就去服务器里面一个总的xml文件中去找,最后实在找不到的话就404了。(欢迎页面也不例外)

    一、Servlet简介:

      Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API动态的向客户端输出内容。

    二、Servlet实现步骤:

    1、创建类实现Servlet接口;

    2、覆盖尚未实现的方法--重点实现service方法;

    3、在web.xml进行Servlet的配置。

    一般使用以下方法:

    1、创建类继承HttpServlet类;

    2、覆盖doGet和doPost;

    3、在web.xml中进行servlet的配置。

    package com.oracle.web;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.google.gson.Gson;
    import com.oracle.daomin.Ask;
    import com.oracle.service.AskService;
    
    public class GetEmAskList extends HttpServlet {
        AskService askService = new AskService();
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
            request.setCharacterEncoding("utf-8");
            //获取传值
            String eid =request.getParameter("eid");    
            List <Ask> list = askService.getaskforeid(eid);
            
            Gson gson = new Gson();    
            String listjson = gson.toJson(list);
            String datastr ="{ "code": 0,"msg": "",  "count":"+list.size()+", "data":"+listjson+"}";
            response.getWriter().write(datastr);
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    三、访问过程:

    四、Servlet的API(生命周期)

     1、init(ServletConfig config)            

      何时执行:servlet对象创建的时候执行

      ServletConfig : 代表的是该servlet对象的配置信息

     2、service(ServletRequest request,ServletResponse response)

      何时执行:每次请求都会执行

      ServletRequest :代表请求 认为ServletRequest 内部封装的是http请求的信息     获取                                                    

      ServletResponse :代表响应 认为要封装的是响应的信息       设置

     3、destroy()

        何时执行:servlet销毁的时候执行

     五、Servlet的配置:

    其中url-pattern的配置方式:

    1、完全匹配 访问的资源与配置的资源完全相同才能访问到:

    2、目录匹配     格式:      /虚拟的目录../*          *代表任意;

    3、扩展名匹配     格式:     *.扩展名

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        id="WebApp_ID" version="2.5">
        <display-name>WEB03</display-name>
        <servlet>
            <servlet-name>HelloServlet</servlet-name>
            <servlet-class>com.oracle.demo01.HelloServlet</servlet-class>
            <init-param><!-- 初始化参数信息 -->
            <param-name>name</param-name>
            <param-value>张阿三</param-value>
            </init-param>
            <!--  设置该Servlet在启动时创建  (值越小优先级越高,不要从1开始)-->
            <!-- <load-on-startup>3</load-on-startup> -->
        </servlet>
        <servlet-mapping>
            <servlet-name>HelloServlet</servlet-name>
            <!--  完全匹配-->
            <!-- <url-pattern>/HelloServlet</url-pattern> -->
            <!-- 目录匹配      *代表任意-->
            <!-- <url-pattern>/a/b/c/*</url-pattern>  -->
            <!-- 扩展名匹配     *. -->
            <!-- <url-pattern>*.jpg</url-pattern>  -->
            <!--  缺省Servlet配置-->
            <url-pattern>/</url-pattern>
        </servlet-mapping>
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>default.html</welcome-file>
            <welcome-file>default.htm</welcome-file>
            <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

    注意:第二种与第三种不要混用 /aaa/bbb/*.abcd(错误的)。

    六、服务器启动实例化Servlet配置:

    Servlet的何时创建:默认第一次访问(请求)时创建

       当在servlet的配置时 加上一个配置 <load-on-startup> servlet对象在服务器启动     时就创建(服务器启动时创建)。

    七、缺省Servlet(默认)

      可以将url-pattern配置一个/,代表该servlet是缺省的servlet

    什么是缺省的servlet?

      当你访问资源地址所有的servlet都不匹配时 , 缺省的servlet负责处理。其实,web应用中所有的资源的响应都是servlet负责,包括静态资源

      新建的INDEX.JSP是静态的,访问时也是会找你的XML文件,当你设置的xml里面没有时,会自动去你的别的文件夹中的找服务器的xml文件里寻找,找不到就404(也是写好的文件页面)

    八、欢迎页面:

      只写项目名时会默认去找你的欢迎页面,设置多个,避免找不着(包括去服务器里的文件中找),实在找不着时就404

  • 相关阅读:
    hdu 5446 Unknown Treasure lucas和CRT
    Hdu 5444 Elven Postman dfs
    hdu 5443 The Water Problem 线段树
    hdu 5442 Favorite Donut 后缀数组
    hdu 5441 Travel 离线带权并查集
    hdu 5438 Ponds 拓扑排序
    hdu 5437 Alisha’s Party 优先队列
    HDU 5433 Xiao Ming climbing dp
    hdu 5432 Pyramid Split 二分
    Codeforces Round #319 (Div. 1) B. Invariance of Tree 构造
  • 原文地址:https://www.cnblogs.com/21-forever/p/11110223.html
Copyright © 2011-2022 走看看