Servlet--06--解决乱码问题; 请求转发; 重定向;
乱码问题:
一. 请求-乱码问题:服务器获取的请求数据,在console显示时,出现了乱码。
(1)post请求方式解决:req.serCharacterEncoding("utf-8");
(2)get请求方式解决:
方式一:每个数据都要单独的转换
String uname = req.getParameter("uname");
String uname2 = new String(uname.getBytes("iso-8859-1"),"utf-8");
方式二:req.setCharacterEncoding("utf-8");
然后再Tomcat的server.xml文件中的Connect标签中增加属性: useBodyEncodingForURI="true"
二. 响应-乱码问题:浏览器显示的服务器响应数据,出现了乱码。
(1)rep.setHeader("content-type","text/html;charest=utf-8");这句话的意思是:我给你一个HTML页面,你要用utf-8的格式去解析!
三. 我们来总结一下,新建的servlet重写service方法时的基本步骤:
service()
{
//设置请求编码格式
//设置响应编码格式
//获取请求数据
//处理请求数据
//响应处理结果
}
Servlet的请求转发:
一. 实现:req.getRequestDispatcher(" ").forward(req, rep);
二. 特点:
(1)一次请求需要多个servlet的联动操作;第一个servlet需要用到其他servlet已经声明的业务逻辑处理代码;
因为request对象--req里面封装了浏览器请求所需要的全部信息; 这个req将会传到下一个servlet中;
(2)请求转发,是服务器的行为,请求由服务器转发给另外一个页面处理,如何转发,何时转发,转发几次,客户端是不知道的。
请求转发时,从发送第一次到最后一次请求的过程中,web容器创建一次 request和response对象,新的页面继续处理同一个请求。
也可以理解为服务器将request 对象在页面之间传递。
(3)servlet的请求转发,可以降低servlet类的代码冗余;
三. 在service中实现:
一个servlet有可能是被浏览器直接访问的, 也有可能是被其他servlet请求转发访问的;
不同的访问方式,要用不同的处理方式:
(1)浏览器访问: 调用getParemeter(), getParemeterValues() 等等方法;
(2)请求转发访问: 调用getAtturebute();
但是一个Servlet在他的生命周期中, 既有可能被浏览器直接访问, 也有可能被其他servlet请求转发访问, 还有可能在他的生命周期中, 背着两种方式都访问过, 所以我们要想一个万全之策!
引入一个三目运算符:
//获取req对象中存储的请求转发数据
String str = ((req.getAttribute("str")==null?"":(string) req.getAttribute("str")
重定向:
一. 解释:
假设ServletA, servletB, servletC .
servletA作为登陆页面去访问servletB, servletB处理完req的部分信息后, 后面的信息servletB处理不好, 所以servletB通过请求转发, 访问servletC, 然后servletC处理,处理完后做出响应;
但是我们知道, 当我们在servletB页面不断刷新时,浏览器地址栏地址是不会变得, 然而,servletB不断的请求访问servletC, 这样不安全!
所以,我们采取重定向技术, servletB通过请求转发, 访问servletC, servletC处理完后,做出相应, 在响应头上添加servletD, 使得浏览器接受响应后, 需要再发送一次请求到servletD, 然后跳转
到servletD的页面, 这样, 我们就保护了servletB和servletC;
二. 如何实现:
req.sendRedirect();
三. 特点:
两次请求,地址栏信息改变;
转载于:https://www.cnblogs.com/EricShen/p/11459484.html
Servlet--06--解决乱码问题; 请求转发; 重定向;相关推荐
- 获取请求参数通用方式|| 中文乱码问题||请求转发
1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数 1. String getParameter(String name):根据参数名称获取参数值 use ...
- springmvc重定向到另一个项目_SpringMVC结合Ajax、请求转发重定向、视图解析器
每日总结 一.Spring结合Ajax的处理方式 1.传统解决方案 直接输出 2.使用SpringMVC框架提供的处理方法 注意: A.方法的返回值可以是对象或者集合 B.响应给前台的数据直接是jso ...
- php 请求转发 重定向,PHP怎么实现页面重定向?(图文+视频)
本篇文章主要给大家介绍PHP实现页面重定向的三种方法详解. 那什么是页面重定向呢? 在网站开发过程中,当我们遇到网页迁移或者网站调整等情况,我们都需要做个重定向,防止流量错失.页面重定向就是通过各种方 ...
- 【Servlet】请求转发、重定向、Cookie使用之三天自动登陆
三天自动登陆项目源码:GitHub地址-LoginSystem JDBC 手写SORM框架 手写Servlet 开发环境:Eclipse 一.请求乱码问题解决 // 设置请求.响应编码格式req.se ...
- Servlet 使用getRequestDispatcher进行请求转发页面未跳转 后台也未报错的问题的解决方法
问题描述: 在Servlet中使用getRequestDispatcher进行请求转发的时候,前端页面空白未出现报错,后台也没有报错. 原因分析: getRequestDispatcher的路径没有问 ...
- java | (二十五)Servlet(1)req,resp,重定向,请求转发,数据共享
今天(2021.9.24)开始学习一些有难度的知识了,如题 先安装和配置好Tomcat,具体下载和idea的配置可以参考 目录 开发步骤 Servlet对象生命周期 httpServletRespon ...
- servlet中请求转发forword与重定向redirect区别
1.请求转发(RequestDispatcher)的过程: 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getReques ...
- Servlet 请求转发(forword)与重定向(sendredirect)的区别
servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...
- servlet中请求转发(forword)与重定向(sendredirect)的区别
servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...
最新文章
- Vert.x 发送邮件
- 鼠标样式(cursor)
- linux下,每次git pull 或者git push都需要输入账号密码的问题以及git remote 的一些基本操作
- lucene 简单示例
- 台式计算机配置清单及价格,电脑配置清单及价格
- 关闭iOS软键盘的小方法
- Java高并发之BlockingQueue
- Java 异常种类及处理方法
- Cookie、Session和自定义分页
- Linux 异步IO
- HTML网上商城后台图片模板,网上购物商城前后台完整模板
- 强贴---不用VBA实现Excel单元格连动下拉选择
- python判断闰年_python如何判断闰年
- python抢红包程序算法,Python 抢红包算法模拟
- 我辞职了准备系统学习新知识和技提升自己
- Win7 获取管理员权限
- 深度学习:自编码器、深度信念网络和深度玻尔兹曼机
- 支付宝支付-常用支付API详解(查询、退款、提现等)(转)
- 模拟电路软件oracle,电子商务模拟教学平台
- mysql安装 修改密码 查找密码
热门文章
- python【Matlibplot绘图库】-认识Matploblib
- Confusion matrix
- Android之Pull解析XML
- 单引号oracle如何转义_如何在Oracle中预测和转义单引号'
- linux虚拟机上不了王,虚拟机上安装Linux时出现的问题及解决方法
- 网站更新的文章如何被百度快速收录?
- 浅析个人网站建设需要注重的建设问题
- 以营销型网站为例,网站建设过程中需要注意哪些问题?
- ros 消息队列与缓冲区_[ROS] [笔记(1)] 一个最简单的例子:Hello Robot(消息、发布者与订阅者)...
- shutdown thread.java_ShutdownHook- Java 优雅停机解决方案