JavaWeb--Servlet小总结

Servlet:替服务器打工干活的
工作内容:
    接收请求数据--->处理请求--->完成响应
实现Servlet方式:
    实现javax.servlet.Servlet接口
    继承javax.servlet.GenericServlet类
    继承javax.servlet.http.HttpServlet类(通常这样做)
说明:Servlet中的方法大多数不由我们来调用,由Tomcat来调用
      Servlet的对象不由我们来创建,由Tomcat来创建
servlet生命周期方法
    void init(ServletConfig):初始化方法  一次
    void service(ServletRequest request, ServletResponse response)每次处理请求时都会被调用N次
    void destroy()            销毁方法   一次
剩余两个方法:
    getServletConfig()      获取Servlet的配置信息
    getServletInfo()        获取Servlet的信息
-------------------------------------------------------------------------
浏览器如何访问sevlet
    1.给servlet指定路径
    2.浏览器访问该路径
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/Servelet</url-pattern>
    </servlet-mapping>
解释说明:
    <servlet>
        <servlet-name>名字</servlet-name>
        <servlet-class>包名.类名</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>名字</servlet-name>
        <url-pattern>/路径</url-pattern>
    </servlet-mapping>

    http://localhost:8080/javaweb181031/AServlet
    http://localhost:8080/项目名/根据路径名找到包名.类名
注意:<servlet>和<servlet-mapping>通过<servlet-name>这个元素关联在一起

附加说明:
让服务器在启动时就创建Servlet
    <load-on-startup>0</load-on-startup>
        在<servlet>元素中配置<load-on-startup>元素可以让服务器在启动时就创建该Servlet,
    其中<load-on-startup>元素的值必须是大于等于的整数,它的使用是服务器启动时创建Servlet的顺序。
<url-pattern> 
    <url-pattern>是<servlet-mapping>的子元素,用来指定Servlet的访问路径,即URL。它必须是以“/”开头!
    在<url-pattern>中也可以使用通配符--星号“*”,星号可以匹配任何URL前缀或后缀,使用通配符可以命名
    一个Servlet绑定一组URL,例如:
    <url-pattern>/servlet/*<url-patter>:/servlet/a、/servlet/b,都匹配/servlet/*;
    <url-pattern>*.do</url-pattern>:/abc/def/ghi.do、/a.do,都匹配*.do;
    <url-pattern>/*<url-pattern>:匹配所有URL;
======================================================================================
                            Servlet接口
servlet中的三个对象:
1.ServletConfig: 对应web.xml文件中的<servlet>元素
    ServletConfig对象服务器创建,然后传递到Servlet的init()方法中使用
    方法:
    getServletName():获取在web.xml文件中<servlet-name>名称;
    getServletContext():获取ServletContext对象
    Enumeration getInitParameterNames():(迭代器)获取在web.xml中配置的所有初始化参数名称;
    getInitParameter(String name):获取在web.xml中初始化参数,通过参数名来获取参数值;
---------------------------------------------------------------------------------------
2.ServletRequest:service()方法的参数,它表示请求对象,
                  它封装了所有与请求相关的数据,它是由服务器创建的;
---------------------------------------------------------------------------------------
3.ServletResponse:service()方法的参数,它表示响应对象,
                   在service()方法中完成对客户端的响应需要使用这个对象;
****************************************************************************************
                        GenericServlet类
GenericServlet是Servlet接口的实现类,可以通过继承GenericServlet来编写自己的Servlet
GenericServlet实现了ServletConfig接口
   可以直接调用getInitParameter()、getServletContext()等ServletConfig的方法
****************************************************************************************
                        HttpServlet类
HttpServlet类是GenericServlet的子类,它提供了对HTTP请求的特殊支持,
所以通常通过继承HttpServlet来完成自定义的Servlet
            祖先---爷爷---父亲---儿子----你(孙子)
---------------------------------------------------------------------------------------
HttpServlet覆盖了service()方法
        HttpServlet类中提供了service(HttpServletRequest,HttpServletResponse)方法,
    这个方法是HttpServlet自己的方法 ,不是从Servlet继承来的。
---------------------------------------------------------------------------------------
doGet()和doPost()
     在HttpServlet的service(HttpServletRequest,HttpServletResponse)方法会去判断当前请求是GET还是POST
如果是GET请求,那么会去调用本类的doGet()方法,
如果是POST请求会去调用doPost()方法,
---------------------------------------------------------------------------------------
HttpServletRequest方法:
    String getParameter(String paramName):获取指定请求参数的值;
    String getMethod():                   获取请求方法,例如GET或POST;
    String getHeader(String name):        获取指定请求头的值;
    void setCharacterEncoding(String encoding)  :设置请求体的编码
        因为GET请求没有请求体,所以这个方法只只对POST请求有效。当调用request.setCharacterEncoding(“utf-8”)
    之后,再通过getParameter()方法获取参数值时,那么参数值都已经通过了转码,即转换成了UTF-8编码。
    所以,这个方法必须在调用getParameter()方法之前调用!
---------------------------------------------------------------------------------------
HttpServletResponse方法:
    PrintWriter getWriter():获取字符响应流,使用该流可以向客户端输出响应信息。
            例如response.getWriter().print(“<h1>Hello JavaWeb!</h1>”);
    ServletOutputStream getOutputStream():获取字节响应流,当需要向客户端响应字节数据时,需要使用这个流,
            例如要向客户端响应图片;
    void setCharacterEncoding(String encoding):用来设置字符响应流的编码,
            例如在调用setCharacterEncoding(“utf-8”);之后,再response.getWriter获取字符响应流对象,
        这时的响应流的编码为utf-8,使用response.getWriter()输出的中文都会转换成utf-8编码后发送给客户端;
    void setHeader(String name, String value):向客户端添加响应头信息,
            例如setHeader(“Refresh”, “3;url=http://www.baidu.com”),表示3秒后自动刷新到http://www.baidu.com
    void setContentType(String contentType):是setHeader(“content-type”, “xxx”)的简便方法,即用来添加名为content-type响应头的方法。
        content-type响应头用来设置响应数据的MIME类型,例如要向客户端响应jpg的图片,那么可以setContentType(“image/jepg”),如果响应数据为文本类型,那么还要台同时设置编码,例如setContentType(“text/html;chartset=utf-8”)表示响应数据类型为文本类型中的html类型,并且该方法会调用setCharacterEncoding(“utf-8”)方法;
    void sendError(int code, String errorMsg):向客户端发送状态码,以及错误消息。
            例如给客户端发送404:response(404, “您要查找的资源不存在!”)。
========================================================================================
                                    ServletContext对象
    一个项目只有一个ServletContext对象!我们可以在N多个Servlet中来获取这个唯一的对象,
使用它可以给多个Servlet传递数据!实现在servlet之间传递数据。
             ServletContext对象的作用是在整个Web应用的动态资源之间共享数据
    ServletContext对象在服务器启动时创建完成,服务器关闭时销毁
获取ServletContext对象
    方式一:ServletConfig        #   getServletContext()
    方式二:GenericServlet       #   getServletContext()
    方式三:HttpSession          #   getServletContext()
    方式四:ServletContextEvent  #   getServletContext()
域对象:PageContext;    ServletRequest;    HttpSession;    ServletContext;
  功能:存取数据功能,域对象内部有一个Map,用来存储数据
ServletContext对象方法:
    void setAttribute(String name, Object value):用来存储一个对象,也可以称之为存储一个域属性,
    Object getAttribute(String name): 用来获取ServletContext中的数据,当前在获取之前需要先去存储才行
    void removeAttribute(String name):用来移除ServletContext中的域属性
    Enumeration getAttributeNames():  获取所有域属性的名称;
      获取应用初始化参数:
          getInitParameter("paraname1")
      获取资源相关方法:
          servletContext.getRealPath(“/a.txt”)            真实路径
          servletContext.getResourceAsStream(“/a.txt”)    资源流

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值