写点什么

JavaWeb - response 对象,重定向,定时跳转案例,蚂蚁金服内推四面

用户头像
极客good
关注
发布于: 刚刚

//设置状态码


response.setStatus(302);


//使用头 Location 完成重定向


response.setHeader("Location", "/aaa/login.html");


(3)代码实现


//得到输入的用户名和密码


String username = request.getParameter("username");


String password = request.getParameter("password");


//根据用户名和密码判断,(用户名 admin、密码 123456)


if("admin".equals(username) && "123456".equals(password)) {


//向页面输出内容


response.getWriter().write("login success");


} else { //重定向到登录页面


//设置状态码


response.setStatus(302);


//使用头 Location 完成重定向


response.setHeader("Location", "/aaa/login.html");


}


(4)重定向的代码简写的方式


response.sendRedirect("要重定向到的页面的路径");

[](

)3、定时跳转的案例


3.1 当注册一个网站,注册完成之后,5 秒之后跳转到登录页面


3.2 实现方式


(1)使用头信息 Refresh 实现


(2)写法: response.setHeader("Refresh","在几秒值后跳转;url=要跳转到页面的路径");


3.3 创建 servlet,在 servlet 实现,在五秒之后跳转到一个页面


response.setHeader("Refresh", "5;url=/aaa/login.html");


3.4 倒计时的效果


(1)直接在 html 页面中实现操作


在 html 中使用 meta 标签实现页面的定时跳转


<meta http-equiv="Refresh" content="3;url=/aaa/login.html">


(2)倒计时


//每一秒向 span 标签里面写内容


//bom 里面 widow 对象里面 setInterval 方法


var m = 5;


function loadTime() {


//得到 span 标签


var span1 = document.getElementById("spanid");


//向 span 里面写内容


span1.innerHTML = m;


m--;


}


setInterval("loadTime();",1000);

[](

)4、设置响应体(向页面输出内容)


4.1 使用字节流向页面输出内容


(1)getOutputStream()


(2)代码


response.getOutputStream().write("输出的内容".getBytes());


(3)如果向页面输出中文,根据不同的浏览器的编码设置会产生乱码问题


  • 解决方法:


/*


  • 1、设置浏览器的编码

  • 2、设置字节数组的编码

  • 让浏览器的编码和字节数组的编码一致

  • */


//设置浏览器的编码 使用头信息 Content-Type


response.setHeader("Content-Type", "text/html;charset=utf-8");


//设置字节数组的编码


response.getOutputStream().write("字节流中文".getBytes("utf-8"));


4.2 使用字符流向页面输出内容


(1)getWriter()


(2)代码


response.getWriter().write("response");


(3)如果使用字符流向页面输出中文,一定会有乱码


/*


  • 使用字符流向页面输出内容;首先会把内容放到 response 缓冲区里面,

  • response 缓冲区默认的编码是 iso8859-1,这个编码不支持中文,一定会有乱码

  • 解决方法:

  • 1、设置 response 缓冲区的编码

  • 2、设置浏览器的编码

  • response 缓冲区的编码和浏览器的编码一致

  • */


//设置 response 缓冲区的编码


response.setCharacterEncoding("utf-8");


//设置浏览器的编码


response.setHeader("Content-Type", "text/html;charset=utf-8");


response.getWriter().write("字符流中文");

[](

)5、使用 response 的流的注意事项


5.1 使用字符流向页面输出中文乱码问题解决,简写方式


response.setContentType("text/html;charset=utf-8");


5.2 字节流和字符流是互斥的


5.3 使用字符流不能直接向页面输出数字


//根据数字到码表中查询数字对应的字符,把字符输出


response.setCharacterEncoding("utf-8");


response.getWriter().write(111);

[](

)6、验证码的案例


6.1 什么验证码:防止恶意注册


6.2 实现验证码的步骤(画图分析)


第一步:生成图片


第二步:生成随机的数字和字母


第三步:把数字和字母画到图片上


第四步:把图片显示到页面上


6.3 代码实现验证码


6.4 显示验证码


(1)把验证码显示到登录的页面中


<img src="验证码的 servlet 的路径"/>


(2)实现看不清换一张


//实现看不清换一张


function loadCode() {


//得到 img 标签


var img1 = document.getElementById("img1");


img1.src = "/aaa/code?"+new Date().getTime();


}

[](

)7、文件下载的案例


7.1 文件下载的基本实现的步骤


(0)设置头信息 Content-Disposition,无论是什么格式的文件都以下载方式打开


(1)在服务器上面有一个可以下载的文件


(2)从服务器上拿到这个文件(使用文件输入流得到文件)


(3)使用输出流把文件写到浏览器


7.2 代码实现文件的下载


//得到要下载文件的路径


String path = getServletContext().getRealPath("/down/a.zip");


//得到文件的名称


//得到最后一个\位置,根据位置进行截取


int lens = path.lastIndexOf("\");


String filename = path.substring(lens+1);


//设置头信息


response.setHeader("Content-Disposition", "attachment;filename="+filename);


//得到文件的输入流


InputStream in = new FileInputStream(path);


//使用输出流操作


OutputStream out = response.getOutputStream();


//流对接


int len = 0;


byte[] b = new byte[1024];


while((len=in.read(b))!=-1) {


out.write(b, 0, len);


}


//关闭流


in.close();

[](

)8、request 对象


8.1 代表请求的对象,HttpServletRequest 接口,父接口是 ServletRequest


8.2 获取请求行的信息


(1)getMethod() :得到 http 请求方式


(2)getRequestURI() :得到请求地址(不包含 ip+端口号)


(3)getPro


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


tocol() :得到 http 的版本


8.3 获取请求头的信息


(1)getHeader(java.lang.String name) :根据名称得到请求头的值


= 头信息 User-Agent:获取当前请求的浏览器的类型


= String agent = request.getHeader("User-Agent");


8.4 获取客户机的信息


(1)getContextPath() :请求项目的名称


(2)getRequestURL() :客户端发送的请求的路径


(3)getRemoteAddr() :获取当前客户端的 ip 地址


8.5 获取表单提交的数据


(1)String getParameter(java.lang.String name) :参数是表单输入项 name 属性的值,根据名称得到输入的值


= 代码


String username = request.getParameter("username");


String password = request.getParameter("password");


(2)String[] getParameterValues(java.lang.String name) :参数是表单输入项 name 的值,针对复选框的情况


= 代码


String[] loves = request.getParameterValues("love");


(3)Map<java.lang.String,java.lang.String[]> getParameterMap() :


= 返回的是 map 集合,key 是表单输入项 name 属性的值,value 是输入的值


= 代码


Map<String,String[]> map = request.getParameterMap();


//得到 map 集合里面的 key 和 value,遍历 map


Set<String> keys = map.keySet();


//遍历 set 集合


for (String key : keys) {


//根据 key 得到 value


String[] values = map.get(key);


//key 和对应的 value 输出(表单输入项 name 的属性值和输入的值)


System.out.println(key+" :: "+Arrays.toString(values));


}


(4)Enumeration<java.lang.String> getParameterNames()


8.6 获取表单提交的中文数据乱码问题的解决


(1)post 提交方式解决方法


= 使用 post 提交数据时候,会把数据放到 request 缓冲区里面,


request 缓冲区默认的编码 iso8859-1,不支持中文


= 解决方法:


设置 request 缓冲区的编码


= 代码:


request.setCharacterEncoding("utf-8");


(2)get 提交中文乱码解决

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
JavaWeb - response对象,重定向,定时跳转案例,蚂蚁金服内推四面