首页 > 其他分享 >Servlet安装以及基础操作

Servlet安装以及基础操作

时间:2023-06-16 10:33:42浏览次数:38  
标签:name Servlet void request response 操作 安装 public

Servlet

创建

  1. 新建一个类,继承Servlet接口
public class TestServlet2 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. 配置

    • 方法一:在webapp/WEB-INF/web.xml中添加配置

      <servlet>
          <servlet-name>test</servlet-name>
          <servlet-class>TestServlet2</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>test</servlet-name>
          <url-pattern>/test</url-pattern>
      </servlet-mapping>
      
    • 方法二:3.0注解配置

      //在类上使用WebServlet注解
      @WebServlet("/demo1")
      public class TestServlet2 implements Servlet{
          ...
      }
      

原理

  1. 浏览器根据网址找到具体的主机,根据后缀找到虚拟路径还有资源名称
  2. tomcat检索web.xml中找到和资源名称相同的url-pattern获得对应servlet-name
  3. tomcat根据servlet-name找到对应servlet-class
  4. tomcat将全类名对应的字节码文件加载进内存(反射)Class.forName()
  5. 创建对象 cls.newInstance())
  6. 调用类中的service方法

生命周期方法

init

  • 初始化方法

  • 在Servlet被创建时执行,只会执行一次

  • 默认情况下,第一次访问时Servlet被创建

    • 可以在web.xml中指定Servlet的创建时机

    • <load-on-startup>0</load-on-startup>
      <!--非0时服务器启动时创建-->
      
  • 只执行一次,说明Servlet在内存中是单例的

    • 所以多用户同时访问时可能会产生多线程安全问题
    • 解决:尽量不要在Servlet中定义成员变量,且不要修改成员变量的值

service

  • 提供服务的方法
  • 每一次Servlet被访问时执行,可以执行多次
  • tomcat服务器创建request和response对象后会传递service方法,然后调用service方法
    • 响应时,服务器从response对象中拿出想要消息数据给浏览器

destroy

  • 销毁方法

  • 在Servlet被销毁时执行(即服务器正常关闭时),执行一次

    • 只有服务器正常关闭之前才会执行

Request & Response

@WebServlet("/demo2")
public class TestServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException{
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{
    }
}

Request:获取请求消息

  • image-20230605190925861
  • 获取请求头

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{
        Enumeration<String> headerNames = request.getHeaderNames();//获取请求体数据
        while(headerNames.hasMoreElements()){
            String name = headerNames.nextElement();
            String value = request.getHeader(name);
        }
    }
    
  • 获取请求体数据:用BufferReader

  • 获取前端参数

    • request.getParameter("Key");
      request.getParameterValues("Key");
      
  • 请求转发

    • request.getRequestDispatcher("/demo2").forward(request,response);
      

Response:设置响应消息

  • 重定向

    • response.sendRedirect("/demo3");
      
  • 转发与重定向的区别

    • 转发是一次请求,重定向是两次

    • 转发不改变url,重定向会

    • 请求转发在服务器完成,重定向在客户端完成

    • 转发的url必须是当前web工程的内部地址,重定向可以是任意地址

  • 设置响应头

    • //void setHeader(String name, String value) 
      response.setHeader("name","value");
      
    • 用给定名称和值设置响应头。如果已经设置了头,则新值将重写以前的值。containsHeader 方法可用于测试在设置其值之前头是否存在

  • 设置响应行

    • response.setStatus(响应状态码);
      
  • 设置响应体

    • PrintWriter writer = response.getWriter();
      writer.write("页面输出内容");
      

标签:name,Servlet,void,request,response,操作,安装,public
From: https://www.cnblogs.com/WgBlogSpace/p/17484949.html

相关文章

  • Linux yum 软件安装
    背景安装软件经常用到RPM,默认的源里面内容非常有限,在安装一些特殊软件的时候,需要自己制定源,例如Gitlab-ce,Gogs等。然而,源是个什么鬼,我从没搞明白过。借助安装Gogs的机会学习下。安装Gogs必须执行下面的指令:sudorpm--importhttps://rpm.packager.io/keyecho"[gogs]name=Reposi......
  • 安装docker
    curl-o/etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com/repo/Centos-7.repoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2yum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed-i-e'......
  • suse12操作系统普通用户报错error while loading shared libraries: libcap.so.2: can
    1、故障描述linux主机普通用户执行ping命令报错ping:errorwhileloadingsharedlibraries:libcap.so.2:cannotopensharedobjectfile:permissiondenied2、故障原因 超级用户修改了根目录权限为655 3、解决方案chmod755/ ......
  • IPMItool安装后出现找不到libfreeipmi.so.17库文件问题
    描述:IPMItool安装后出现找不到libfreeipmi.so.17库文件问题解决:通过find查找libfreeipmi.so.17文件,设置环境变量:exportLD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH(单次生效) 永久生效 ......
  • Linux下的Jenkins安装教程
    sudowget-O/etc/yum.repos.d/jenkins.repohttps://pkg.jenkins.io/redhat-stable/jenkins.repo--no-check-certificatesudorpm--importhttps://pkg.jenkins.io/redhat-stable/jenkins.io.key通过yum安装Jenkinsyum-yinstalljenkinsJenkins默认端口号为8080,输入vim......
  • Linux环境下JDK安装
    安装JDK将JDK导入opt目录下面的software文件夹解压JDK到/opt/module目录下tar-zxvfjdk-8u144-linux-x64.tar.gz-C/opt/module/配置JDK环境变量获取jdk路径[[email protected]_144]$pwd/opt/module/jdk1.8.0_144打开/etc/profile文件vim/etc/......
  • ubuntu安装python3.8.3
    1.打开终端,更新软件包列表:sudoaptupdate2.安装编译Python所需的构建工具和库:sudoaptinstallbuild-essentiallibssl-devzlib1g-devlibncurses5-devlibncursesw5-devlibreadline-devlibsqlite3-devlibgdbm-devlibdb5.3-devlibbz2-devlibexpat1-devliblzma-dev......
  • qt6 在线安装
    Qt6在线安装下载安装工具:https://download.qt.io/official_releases/online_installers/安装,使用国内源提升下载速度。./qt-unified-windows-x64-4.6.0-online.exe--mirrorhttps://mirror.nju.edu.cn/qt......
  • C++面试八股文:了解sizeof操作符吗?
    C++面试八股文:了解sizeof操作符吗?某日二师兄参加XXX科技公司的C++工程师开发岗位第10面:面试官:了解sizeof操作符吗?二师兄:略微了解(不就是求大小的嘛。。)面试官:请讲以下如何使用sizeof?二师兄:sizeof主要是求变量或者类型的大小。直接使用sizeof(type)或sizeof(var)`即可。......
  • 操作系统架构设计:如何优化系统性能和资源利用率
    目录1.引言2.技术原理及概念2.1.基本概念解释2.2.技术原理介绍3.实现步骤与流程3.1.准备工作:环境配置与依赖安装3.2.核心模块实现3.3.集成与测试操作系统架构设计:如何优化系统性能和资源利用率随着计算机硬件性能的不断提高和软件功能的不断扩展,操作系统在系统性能、资......