浅谈Servlet和HttpServlet

servlet进行实现网络编程

首先要使用对应的Servlet的jar包文件,如果是maven管理的项目就直接导入对应的pom文件实现对应Servlet-api文件包实现使用对应的Servlet接口实现,但是要注意tomcat对应Servlet的api命名本文实现使用tomcat10来操作所用的api是jakarta

使用Servlet要实现的方法

package com.itsense;

import jakarta.servlet.*;

import java.io.IOException;

public class ServletDemo implements Servlet {
//初始化Servlet(只会执行一次)
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }
//获取SServlet的配置信息
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
//主要实现Service方法
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

    }
//返回Servlet信息
    @Override
    public String getServletInfo() {
        return "";
    }
//销毁servlet(只会执行一次)
    @Override
    public void destroy() {

    }
}

Servlet是单例模式,只会生成一次之后多次调用,生命周期是调用创建到最后的项目结束之后进行销毁实现

配置对应的Web.xml文件

	<servlet>
		<servlet-name>servletDemo01</servlet-name>
		<servlet-class>com.itsense.ServletDemo01</servlet-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>servletDemo01</servlet-name>
		<url-pattern>/a</url-pattern>
	</servlet-mapping>

对应的servletservlet-mappingservlet-name必须保持一致,不然没有办法通过使用url-pattern实现对应的反射实现servlet-class的实现。在servelt中使用init-param来实现对应参数的初始化实现,可以直接设置对应的网站编码就不需要再service方法中set对应的encoding,还可以使用load on startup标签来实现初始化的时间,如果设置为0就随着使用tomcat的启动同时创建对应的初始化类的实现,其中不同的Servlet的实现的初始化顺序是根据load on startup的大小顺序来实现的是升序的顺序进行初始化的,但是使用场景比较多的就是设置为0随着网站的初始化实现对应的实现类。Servlet在使用上面还需要实现对应的5个方法比较臃肿,所以就使用Servlet的孙子类HttpServlet来实现对应的操作更加简便

HttpServlet实现网络编程

注入依赖

Servlet一样需要引入对应的pom文件的依赖

    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>5.0.0</version>
    </dependency>

Servlet中实现对象的路径是使用url-pattern来实现对应的访问路径但是使用HttpServlet来实现路径就只需要使用@WebServlet("/path")就直接实现对应的路径创建,就省去了使用Web.xml文件设置对应的文件操作。同时HttpServlet已经实现了所有的方法创建一个类并不必须要去重写所有的方法,就只要实现对应的service方法就行了,之后就只需要使用两个对象的实现操作就可以直接使用对应的Servlet网络实现

HttpServletRequest的使用方法

获取对应的信息请求行

System.out.println("请求方式:" + req.getMethod());
System.out.println("请求完整路径" + req.getRequestURL());
System.out.println("请求的资源路径" + req.getRequestURI());
System.out.println("请求项目的虚拟化路径" + req.getContextPath());
System.out.println("项目资源路径" + req.getServletPath());

使用req对象可以返回对应的参数,有三种返回方式
1.返回一个参数直接使用对应参数的Key来返回

        String userName = req.getParameter("username");
        System.out.println("useName : " + userName);
        String pwd = req.getParameter("pwd");
        System.out.println("pwd : " + pwd);

返回的参数一般是String类型如果是Date参数也是会转化为String类型实现
2.返回一组参数使用同名的参数返回的值的数组实现

        String[] hobbies = req.getParameterValues("hobby");
        System.out.println("爱好 : " + Arrays.toString(hobbies));

返回的数据类型是String[]类型,使用数组返回
3.返回所有参数的键值对返回类型是Map<String, String[]>

 Map<String, String[]> parameterMap = req.getParameterMap();
 Set<Map.Entry<String, String[]>> es = parameterMap.entrySet();
 for(Map.Entry<String, String[]> e: es){
	    System.out.println(e.getKey() + ": " + Arrays.toString(e.getValue()));
	}

碎碎念

复习一下之前的知识点,仅供参考,真正想要深入学习还是建议去看官方文档…这篇就到此为止…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值