Servlet的一些基础知识点

Servlet

  • Servlet是Java所提供的一门动态资源开发技术

简单实现

  1. 创建web项目,导入Servlet的依赖坐标
<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
  1. 创建一个类实现Servlet接口
public class ServletDemo implements Servlet {
    public void init(ServletConfig servletConfig) throws ServletException {
        
    }

    public ServletConfig getServletConfig() {
        return null;
    }

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

    }

    public String getServletInfo() {
        return null;
    }

    public void destroy() {

    }
}
  1. Servlet进行配置,在类上使用@WebServlet注解,配置访问路径
@WebServlet(/demo)
public class ServletDemo implements Servlet {....}

这里完整的写法是

@WebServlet(urlPatterns = "/demo",loadOnStartup = 0)
public class ServletDemo implements Servlet {....}

这里的loadOnStartup默认值是 -1 ,表示在调用时才会实现服务。如果是 0 及 以上,表示在容器工作时一起运行了,越小优先度越高,当一些较大且重要的功能需要实现而不希望用户等太久,就可以这样操作。

注意!!!!!

这里的路径前一定要加上" / ",不然会显示“子级路径创建失败”的错误!!!

  1. 启动Tomcat,浏览器输入相应的URL进行访问
http://localhost/demo

Servlet 的生命周期

Servlet运行在容器之中,生命周期由容器所决定,分为四个阶段:

  1. 加载和实例化:默认情况下,Servlet被第一次访问时,由容器所创建Servlet对象
  2. 初始化:在Servlet被实例化之后,Servlet容器将调用init()方法初始化对象,完成一些初始化的工作
  3. 请求处理:在每次请求Servlet时,容器都会调用Servlet中的service()方法
  4. 服务中止:在释放内容,容器关闭时Servlet会调用destroy()方法,并且释放Servlet实例。(要只用控制台运行Tomcat并且停止运行才OK,IDEA的直接关闭会毁掉协议)

Servlet 的基本方法

方法作用时段
public void init(ServletConfig servletConfig)初始化方法,只被调用一次
public ServletConfig getServletConfig()提供服务方法,每次调用都会执行
public void service(ServletRequest servletRequest, ServletResponse servletResponse)获取对象
public String getServletInfo()获取对象信息
public void destroy()销毁方法,在资源执行时会执行

HttpServlet 的简单介绍

  1. HttpServlet使用步骤
    • 继承HttpServlet
    • 重写doPost()doGet()方法’’
@WebServleT	("/demo1")
public class ServletDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("啦啦啦");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("POST");
    }
}
  1. HttpServlet原理
    • 获取请求方式,并且根据不同的请求方式使用不同的方法

比如写一个Post方式提交数据的表单

<form action="/demo1" method="post">

    <input name="用户名称"><input type="submit">
    
  </form>

此时ServletDemo3里面的doPost方法就会实现

urlPattern的配置规则

  1. 精确匹配
    • 配置路径:@WebServlet(/demo)
    • 访问路径:http://localhost/demo
  2. 目录匹配
    • 配置路径:@WebServlet(/demo/*)
    • 访问路径:http://localhost/demo/aaa
    • 访问路径:http://localhost/demo/bbb
  3. 扩展名匹配
    • 配置路径:@WebServlet(*.do)
    • 访问路径:http://localhost/aaa.do
    • 访问路径:http://localhost/bbb.do
      !!注意 :这里的 * 之前没有 / !!
  4. 任意匹配
    • 配置路径:@WebServlet(/)
      • 配置路径:@WebServlet(/*)
    • 访问路径:随便啦~~

注意:当项目中的Servlet配置了任意匹配的路径,会覆盖tomcat的DfaultServlet,当其他的url-pattern匹配不上时,就会走这个Servlet,当项目中配置了"/"意味着会访问任意的路径

相关作业

HTML部分

<form action="/demo3" method="post">
    <input name="name"><input type="submit">
  </form>

Servlet部分

 		String name = req.getParameter("name");
        System.out.println(name);

        name = new String(name.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);
        System.out.println(name);

运行结果:
??????
张三

Cookie的基本使用

  • Cookie是浏览器端的会话跟踪技术

发送Cookie对象

  1. 创建Cookie对象
	Cookie cookie = new Cookie("key","value");
  1. 发送Cookie对象到客户端:使用response对象
	response.addCookie(cookie);

获取Cookie对象

  1. 获取客户端所有Cookie对象,使用request对象
	Cookie[] cookies = request.getCookies();
  1. 遍历数组
  2. 获取想要的信息
	cookie.getName();
	cookie.getValue();

具体的实现(例如想要获取“name”的信息)

	Cookie[] cookies = request.getCookies();
	//进行遍历
	for(Cookie cookie : cookies){
	
		if("name".equals(cookie.getNmae()){
			String value = cookie.getValue();
			System.out.println(value);
			
			break;
		}
	}

使用细节

  • Cookie的存活时间
    • 默认情况下当浏览器关闭时,内存释放,则Cookie释放
    • 可以使用setMaxAge(int second)设置Cookie的存活时间
      1. 正数:将Cookie写入当前浏览器的内存中,直到时间结束
      2. 负数:默认值
      3. 0:删除对于的Cookie
  • Cookie存储中文
    • Cookie不能直接存储中文,要进行一系列的转码

例如,在设置时

	String value = "名字";
	value = URLEncoder.encode(value,"UTF-8");

在接收时

	String value = request.getValue();
	value = URLDecoder.decode(value,"UTF-8");

Session的一些基本使用

  • 服务器端的会话跟踪技术
  • JavaEE提供HttpSession接口,来实现一次会话多次请求数据之间的资源共享
  • 使用
    1. 获取对象
      HttpSession session = request.getSession();
    2. Session对象的基本使用功能
      方法名称|作用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值