2021/08/10笔记

我们于2021/08/10 的学习目标是:Servlet,核心任务为:

1、学习技术:

1)、Servlet概述

2)、如何创建Servlet

3)、Servlet的配置

4)、Servlet内置方法的使用

5)、Servlet的生命周期

6)、单例模式

7)、乱码问题

8)、转发与重定向

2、文档总结

1)、Servlet概述

历程:Servlet 是在服务器上运行的小程序。这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。

服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行 Java,这种程序可使用 Java 编程语言实现。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。

实现过程:

  1. 客户端发送请求至服务器端
  2. 服务器将请求信息发送至Servlet
  3. Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求
  4. 服务器将响应返回给客户端

2)、如何创建Servlet

创建Servlet对象有两种办法

第一种,继承HttpServlet类,实现其中的server方法;

package com.sdf.web;



import javax.servlet.*;

import java.io.IOException;

public class practice extends HttpServlet {

    @Override

    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

    }

}

第二种,实现Servlet接口并实现全部方法。

package com.sdf.web;



import javax.servlet.*;

import java.io.IOException;



public class class_extend_test implements Servlet {

    @Override

    public void init(ServletConfig servletConfig) throws ServletException {

       

    }



    @Override

    public ServletConfig getServletConfig() {

        return null;

    }



    @Override

    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {



    }



    @Override

    public String getServletInfo() {

        return null;

    }



    @Override

    public void destroy() {



    }

}



3)、Servlet的配置

@WebServlet 属性注解

name:指定这个Servlet的名字

value:指定访问路径,以/开头

displayName:该 Servlet 的显示名

web.xml配置

<!--xml配置servlet-->

<servlet>

  <servlet-name>abcServlet</servlet-name>

  <servlet-class>com.yjxxt.web.FirstServlet</servlet-class>

  <!--饿汉式-->

  <load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

  <servlet-name>abcServlet</servlet-name>

  <url-pattern>/first</url-pattern>

</servlet-mapping>

4)、Servlet内置方法的使用

分类:

HttpServletRequest --> req

HttpServletResponse --> res

HttpServletRequest的常用方法

req.getParameter(String s)

获取请求的返回值

req.setAttribute(String s,Object o)

给对象的属性赋值

HttpServletResponse的常用方法

res.getWriter().print("你好")

在页面打印

res.setContextType("text/html;charset=utf-8") 

设置文档格式和编码格式

res.setLocale();

重定向

5)、Servlet的生命周期

  • Servlet的实例化只有一次,且被所有线程共享
  • Servlet在初始化时会调用init()方法
  • Servlet在调用时使用service()方法接受处理客户端的请求
  • Servlet在销毁前会调用destory()方法
  • Servlet是由JVM的垃圾回收器进行垃圾回收

6)、单例模式

单例模式又分懒汉式和饿汉式,其中懒汉式是默认设置。

饿汉模式:指像饿汉一样不顾一切就开吃。在Servlet中指不管以后的代码需不需要用到实例,都要在类产生的时候把实例创建好,这是一种空间换时间的做法。

懒汉模式:指像懒汉一样,该做的时候才去做。在Servlet中指在需要实例的情况下程序才去创建实例,不需要实例的情况下程序则不会去创建,这是一种时间换空间的做法。

7)、乱码问题

乱码的概念:

由于计算机中的数据都是以二进制形式存储的,因此,当传输文本时,就会发生字符与字节之间的转换。

字符与字节之间的转换是通过查码表来完成的,将字符转为字节的过程称为编码,将字节转换为字符的过程称为解码。

如果编码和解码使用的码表不一致,就会导致乱码问题。

res.setContextType("text/html;charset=utf-8")

通过此命令设置HttpServletResponse使用UTF-8编码,同时通知浏览器使用UTF-8解码。

req.setCharacterEncoding=utf-8

通过此命令设置HttpServletRequest使用UTF-8编码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

在jsp文件中设置编解码格式

Dfile.encoding=utf-8

在IDEA的Custom VM Options中设置解码格式

8)、转发与重定向

在我们浏览网页时,网页相互跳转的操作是非常常见的。在实际的网站开发中,我们可以通过使用Servlet中的转发和重定向实现页面跳转。

转发:

getRequestDispatcher()

请求转发,将客户端的请求转发到另外一个Servlet或JSP页面。

重定向:

sendRedirect()

重定向功能是让浏览器重新发生请求,但是将请求的是另外一个Servlet。

转发与重定向的区别:

转发发生一次请求;重定向发生两次请求。

转发只能发生在项目内部,不可以跨域;重定向可以跨域

重定向由于发生的两次请求,req作用域不可以再带值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值