request.setHeader()的用法

request.setHeader()的用法

提示:君子不忍其短,不能则问,不会则学



一、response.setHeader() 的用法``

response.setHeader() 方法用于设置HTTP响应的头部信息。它接受两个参数:头部名称和头部值。

response.setHeader(String name, String value)
  • name 参数是要设置的HTTP头部的名称
  • value 参数是要设置的HTTP头部的

通过设置HTTP头部,开发人员可以控制浏览器如何处理HTTP响应,以及向客户端传递一些额外的信息。常见的HTTP头部包括:

  • Content-Type:指定响应体的MIME类型,告诉浏览器如何解析响应体数据。
  • Content-Length:指定响应体的长度,以字节为单位。
  • Content-Disposition:指示浏览器如何处理响应体,例如作为内联内容显示还是作为附件下载。
  • Cache-Control:指定缓存策略,控制浏览器是否缓存响应。
  • Set-Cookie:设置Cookie,用于在客户端和服务器之间传递状态信息。

示例用法:

response.setHeader("Content-Type", "text/html");
response.setHeader("Content-Length", String.valueOf(htmlContent.length()));
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");

这些设置可根据具体需求进行调整,以控制HTTP响应的行为和特性。

二、实战

把响应的数据导出附件下载
例:

response.setHeader("content-disposition",
"attachment;fileName=" + URLEncoder.encode("教师列表.xls", "UTF-8"));

这行代码设置了HTTP响应头部,具体来说是设置了"Content-Disposition"头部字段,其值为"attachment;fileName=教师列表.xls"。

  • “Content-Disposition” 是一个HTTP响应头部字段,通常用于指示客户端如何处理响应体数据。在这个例子中,它告诉浏览器将响应体作为附件下载,而不是在浏览器中直接打开。
  • “attachment” 表示响应体作为附件处理,而不是在浏览器中内联显示。
  • “fileName=” 后面是要下载的文件名。在这个例子中,文件名是"教师列表.xls"。
  • URLEncoder.encode(“教师列表.xls”, “UTF-8”) 用于对文件名进行URL编码,以确保文件名中的特殊字符不会破坏HTTP头部的格式,同时也确保在各种环境中的正确显示。
    综合起来,这行代码告诉浏览器将响应体作为名为"教师列表.xls"的附件下载。

总结

以上介绍了request.setHeader()的一些用法和实战,希望对各位小伙伴有帮助。

针对于表格:<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="LoginServlet" method="post"> 用户名:<input type="text" name="password"><br> 密   码: <input type="password" name="password"><br> <input type="submit" value="登录"> <input type="reset" value="重置"> </form> </body> </html>用了三个servlet,第一个的doget方法是protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-type", "text/plain);charset=UTF-8"); String username=request.getParameter("username"); String password=request.getParameter("password"); if(username!=null&&password!=null) { if(username.equals(password)) { HttpSession session=request.getSession(); session.setAttribute("username", username); response.sendRedirect("WelcomeServlet"); }else { response.getWriter().append("用户名密码错误,请重新登录,5秒后回到登录界面..."); response.setHeader("Refresh", "5;URL=Login.html"); } } else { response.getWriter().append("禁止直接访问,5秒后回到登录页面......"); response.setHeader("Refresh", "5;URL=Login.html"); } }第二个的doget方法是protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response. setCharacterEncoding ("UTE - 8" ) ; response. setHeader ( "Content - type","text/html; charset = UTE - 8" ) ; HttpSession session = request. getSession(false); if (session!= null) { String username = (String) session. getAttribute("username" ) ; if (username != null) response. getWriter().append("欢迎你,"+ username). append("< a href = 'LogoutServlet>退出登录</a >"); else { response.getWriter().append("你还没有登录,5 秒后跳转到登录页面⋯⋯"); response.setHeader ("Refresh","5;URL =login.html"); } } else { response.getWriter().append("禁止直接访问,5秒后跳转到登录页面.."); response. setHeader("Refresh", "5;URL = 1ogin.html"); } }第三个的doget方法是protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response. setCharacterEncoding ("UTF - 8" ) ; response. setHeader ("Content - type", "text/plain; charset = UTF - 8") ; HttpSession session = request.getSession(false); if (session!= null) { session. removeAttribute( "username" ) ; response. getWriter().append("注销成功,5秒后跳转到登录页面⋯"); response. setHeader ("Refresh", "5; URL = login. html" ) ; }else { response.getWriter().append("你还未登录,无须注销,5秒后跳转到登录页面⋯"); response. setHeader("Refresh", "'5;URL = 1ogin. html");} }为什么我在用户名和密码都输入zly显示是禁止直接访问,5秒后回到登录界面
最新发布
10-21
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值