XML配置方式编写Servlet

3.0版本之前,仅仅支持XML配置文件的配置方式

1、编写Servlet类

2、在web.xml中配置该Servlet

Request和Response

Request------>获取请求数据

Response----->设置响应数据

Request继承体系

ServletRequest---->Java提供的请求对象接口

^

|

HttpServletRequest---->Java提供的对Http协议封装的请求对象接口

^

|

RequestFacade---->Tomcat定义的实现类

Request获取请求数据

1、请求行

获取请求方式,获取虚拟目录,获取URL,获取URI,获取请求参数

2、请求头

根据请求头名称,获取值

3、请求体

获取字节输入流,获取字符输入流

参数:利用相应表单获取对应的post请求方式(输入流);而get请求方式通过getQueryString()方法获取

Request对象使用通用方式获取请求参数

请求参数获取方式:

GET方式:String getQueryString();
POST方式:BufferedReading getReader();

1、Map<String,String[]> getParameterMap():获取所有参数Map集合

2、String[] getParameterValues(String name):根据名称获取参数值(数组)

3、String getParameter(String name):根据名称获取参数值(单个值)

GET和Post方法示例:

更高效----使用Servlet模板创建

在Java文件夹中创建一个Servlet类型的.java文件,会自动生成一个相关的Servlet模板

步骤如下:

右键Java文件夹,new--->Servlet---->即可生成模板

目前,我们需要的Servlet模板没有这么复杂,所以可以通过下面的步骤将模板修改为我们所需要的模板样式

步骤如下:

File--->Settings--->Editor--->File and Code Temples

再选择其中的Other

找到下面的web中的Java codetemples--->Servlet Annotated Class.java,就可以进行模板的修改啦!

Request对象请求转发

一种在服务器内部的资源跳转方式

实现方式:

req.getRequestDispatcher("资源B路径").forward(req,resp);

请求转发资源间共享数据,使用Request对象

void setAttribute(String name,Object o);//存储数据到request域中
Object getAttribute(String name);//根据key,获取值
void removeAttribute(String name);//根据key,删除该键值对

请求转发的特点

1、浏览器地址栏路径不发生变化

2、只能转发到当前服务器的内部资源

3、一次请求,可以在转发的资源间使用request共享数据

Response对象

设置响应数据功能

1、响应行

void setStatus(int sc);//设置响应状态码

2、响应头

void setHeader(String name,String value);//设置响应头键值对

3、响应体

PrintWriter()//实现字符输出流

ServletOutputStream getOutputStream()//获取字节输出流

Response完成重定向(一种资源跳转方式)

实现方式:

resp.setStatus(状态码);
resp.setHeader("location","资源B的路径");

要清楚的是,在设置资源B的路径时,需要加上前面的虚拟目录

特点:

1、浏览器地址栏发生变化

2、可以重定向到任意位置

3、两次请求,不能在多个资源使用request共享数据

Response响应字符数据(设置字符数据的响应体)

利用setHeader()方法识别html标签

如果想要输入中文,可能会出现乱码情况,所以需要进行以下操作:

重要操作!!!!!!!!!!!!

并且,流是不需要关闭的

Response响应字节数据(图片数据)

最新文章

  1. 10——operator=返回reference to *this
  2. spring MVC @Resource不支持Lazy加载
  3. 使用Struts 2框架实现文件下载
  4. iOS 真机文件系统区分大小写,而模拟器可能不区分
  5. 51nod1049(计算最大子段和)
  6. mysql入门语句10条
  7. ios-改变button四个角的弧度
  8. angular的post请求,SpringMVC后台接收不到参数值的解决方案
  9. C++第五天学习
  10. docker安装-centos7
  11. Singleton(单例)模式
  12. 磨刀不误砍柴工!vs2010快捷键大全
  13. 使用vue框架运行npm run dev 时报错解决
  14. 修改 iOS AppIcon
  15. 【刷水】之USACO2008资格赛(Bzoj1599-1603)
  16. 【转】C语言堆栈入门——堆和栈的区别
  17. mysql中用limit 进行分页有两种方式
  18. .Net Core Cors中间件解析
  19. SpringMVC视图解析器概述
  20. React 使用 PropTypes 进行类型检查

热门文章

  1. (Jmeter笔记)设置全局变量,跨线程调用变量,函数助手使用方法__setProperty和__p
  2. bean依赖注入三种方式
  3. python写入sqlserver中文乱码问题
  4. 数据库负载均衡 happroxy 中间器(Nginx)容器的安装与配置
  5. pycharm怎么查看某个包pycharm怎么查看某个包的源码的源码
  6. 音标s ed
  7. InnoDB的全文检索
  8. 【相邻父元素选择器】为啥p元素里面的h3也被选择了呢?求赐教
  9. SVN报错:database is locked
  10. 项目:表格打印(字符图网格进阶、rjust、列表中最长的字符串长度)