自动化测试开发

4、Servlet模型(一)

Servlet的编写、访问过程

Servlet简介

  • Servlet是Java Servlet的简称,是小服务程序或服务连接器,是用Java编写的服务器端程序,主要功能在于获取请求,返回响应
  • 广义:一个Servlet是一个Java语言编写的类,提供请求响应式的编程模型
  • 狭义:Servlet是指Java语言实现的一个接口

编写部署Servlet程序

编写源文件
  • 编写类实现(implements)

javax.servlet.Servlet接口,在类中实现

javax.servlet.Servlet接口中的方法

编写类文件
  • 通过Javac命令编译写好的源文件
  • 注意:-cp参数的使用
部署程序
  • 将编译生成字节码(.class)文件复制到"号站点号/WEB-INF/classes/"目录,需要注意目录结构
  • 配置web.xml中的<servlet>、<servlet-mapping>节点

编写部署Servlet 程序步骤

1、编写Servlet程序(实现Servlet接口)
2、编译Servlet源文件,生成字节码文件

注意:

  • DOS窗口中进入Servlet文件所在目录
  • -cp参数导入需要的jar包

++javac++ -cp .;lib\*Hello.java

3、部署

在Tomcat的webapps目录下创建项目目录

在项目目录下创建WEB-INF目录

在WEB-INF目录下放置web.xml配置文件、classes目录和lib目录

  • classes目录中是步骤2中生成的字节码文件
  • lib目录中是用到的jar包
4、运行
  • 启动Tomcat
  • 访问Servlet
Servlet处理请求,返回响应

++http://localhost:8080/MyWebsite/hello++

WEB-INF目录下web.xml

<servlet>

<servlet-name>helloWorld</servlet-name>

<servlet-class>xx.xx.HelloServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>helloWorld</servlet-name>

<url-pattern>/hello</url-pattern>

</servlet-mapping>

Servlet中的请求与响应

接收请求

Tomcat启动后Web容器首先做的工作

  • 接收到请求后服务器转交请求给Web容器
  • Web容器产生请求对象和响应对象
  • 调用Servlet的service()方法,并将请求和响应对象作为参数传入该方法
  • service方法根据请求方式调用doXXX()方法

返回响应

  • 在doXXX()方法中使用请求对象获取请求信息,响应对象返回响应结果(PrintWriter对象)
  • 销毁请求、响应对象

接收请求

  • HttpServletRequest接口以参数的形式传递到service方法里
  • HttpServlet的service方法
  • 受保护的service()方法根据请求类型调用doXXX()方法
  • 所以一般要重写doXXX()方法

解析请求

getParameter()方法

  • href="RegistServlet?userName=zs"
  • 表单中的name属性值的获取
  • request.getHeaderNames();
  • request.getHeader("host");//服务器主机
  • request.getRemoteHost();//客户端IP
  • request.setCharacterEncoding("UTF-8");

++Enumeration e =++ ++request.getHeaderNames++ ++();++

while(e.hasMoreElements()) {

System.out.println***(e.nextElement());***

}

Attribute参数

  • setAttribute() :设置参数
  • getAttribute() :获取某个参数的值

HttpServletResponse接口

protected void doGet(HttpServletRequest request, HttpServletResponse response)

  • getWriter()方法,返回的是一个输出流
  • response.setContentType("text/html");

编码

  • response.setCharacterEncoding("UTF-8");
  • response.setContentType ("text/html;charset=UTF-8");

示例:

Servlet中请求数据的传递、请求转发与请求重定向

Servlet应用执行过程--请求转发

Servlet应用执行过程--重定向

请求重定向、请求转发

请求转发

  • request.getRequestDispatcher(" targetURL").forward(request, response);

请求重定向

  • response.sendRedirect("targetURL")

请求数据的传递

请求数据的传递

  • request.setAttribute(String,Object)
  • request.getAttribute(String),返回Object

注意:

请求转发可以共享参数

  • request.getParameter()
  • request.getAttribute()

请求重定向无法共享参数

请求重定向、请求转发区别

本质

  • 请求转发:一次请求
  • 请求重定向:两次请求

速度

  • 请求转发 > 请求重定向

Attribute参数

  • 请求转发可共享参数
  • 请求重定向不可共享参数

地址栏

  • 请求转发:不变
  • 请求重定向:变
相关推荐
zhang98800004 小时前
储能领域大数据平台的设计中如何使用 Hadoop、Spark、Flink 等组件实现数据采集、清洗、存储及实时 / 离线计算,支持储能系统分析与预测
大数据·hadoop·spark
Lx3525 小时前
Hadoop日志分析实战:快速定位问题的技巧
大数据·hadoop
喂完待续8 小时前
【Tech Arch】Hive技术解析:大数据仓库的SQL桥梁
大数据·数据仓库·hive·hadoop·sql·apache
最初的↘那颗心9 小时前
Flink Stream API 源码走读 - window 和 sum
大数据·hadoop·flink·源码·实时计算·窗口函数
喂完待续21 小时前
Apache Hudi:数据湖的实时革命
大数据·数据仓库·分布式·架构·apache·数据库架构
计艺回忆路1 天前
从Podman开始一步步构建Hadoop开发集群
hadoop
计算机源码社2 天前
分享一个基于Hadoop的二手房销售签约数据分析与可视化系统,基于Python可视化的二手房销售数据分析平台
大数据·hadoop·python·数据分析·毕业设计项目·毕业设计源码·计算机毕设选题
计算机毕设残哥2 天前
完整技术栈分享:基于Hadoop+Spark的在线教育投融资大数据可视化分析系统
大数据·hadoop·python·信息可视化·spark·计算机毕设·计算机毕业设计
计算机源码社3 天前
分享一个基于Hadoop+spark的超市销售数据分析与可视化系统,超市顾客消费行为分析系统的设计与实现
大数据·hadoop·数据分析·spark·计算机毕业设计源码·计算机毕设选题·大数据选题推荐
beijingliushao3 天前
33-Hive SQL DML语法之查询数据-2
hive·hadoop·sql