`

32、servlet --重定向/下载/缓存/中文乱码

    博客分类:
  • mvc
 
阅读更多
重定向1、sendRedirect
rep.sendRedirect(path+"/pages/login.jsp?info=username or password is worng .");
重定向2、Location  一定要设置302  302是指请求重定向
rep.setStatus(302);
rep.setHeader("Location", basePath+"pages/login.jsp?info=username or password is worng .");
重定向3、Refresh
rep.setHeader("Refresh", "2,pages/login.jsp?info=username or password is worng .");


使用sendRedirect()传递参数
1、static变量,纯servlet时可用
2、...jsp?name=name&pwd=111122   缺点:只能穿字符串,而不能传对象
3、使用session
    传字符串:
//存入seesion
 req.getSession().setAttribute("name", name);
//重定向1、sendRedirect
rep.sendRedirect(path+"/pages/login.jsp?info=username or password is worng .");

  获取seesion
  <%=request.getSession().getAttribute("name") %>
传递对象:
  req.getSession().setAttribute("obj", ct);
  <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
   ${obj.name }
在servlet中获取:
   Constant ct = (Constant)request.getSession().getAtttibute("obj");



web容器下载文件的原理:
1、将图片图取到内存中
2、将文件发送给浏览器
response.setContentType("text/html;charset=utf-8");
		//提示浏览器有文件下载,自动弹框,默认是打印在浏览器页面上
		response.setHeader("Content-Disposition", "attachment;filename=1.jpg");
		//获取文件的真实路径
		String realPath = this.getServletContext().getRealPath("/images/1.jpg");
		//System.out.println(realPath);
		//将文件存入内存,创建输入流
		FileInputStream fi = new FileInputStream(realPath);
		byte buff [] = new byte[2048];
		//实际每次读取了多少字节
		int len = 0;
		OutputStream os = response.getOutputStream();
		while((len=fi.read(buff))>0)
		{
			//发送给浏览器
			os.write(buff,0,len);
		}
		os.close();
		fi.close();
	}



缓存:
浏览器缓存(Browser Caching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页面的阅览。
浏览器默认会缓存所用页面,但对于及时交互性较强的网站如银行、证券系统是不合适的;
1、禁用缓存
response.setDateHeader("Expires",-1);  [ie]
response.setHeader("Cache-control","no-cache"); [firefox]
response.setHeader("Pragme","no-cache"); [other browser]

2、设置缓存时间
response.setDateHeader("Expires",System.currentTimeMillis()+3600);


web容器对每个请求都会 创建一个request对象和一个response对象;作为service()方法的参数;
response不能同时使用getWriter()和getOutputStream();
原因:
1、web容器拆解response为http协议识别的信息
2、web容器检测response所带的对象、属性、流等,查看liu是否关闭,没关闭就容器来关闭流;
3、web关闭了writer流,而还存在output流,提示流已经被关闭错误。


request的中文乱码处理:
response的中文乱码处理:
发生中文的3中情况
1、表单
2、超链接?name=民族(本质是get方式提交)
解决方法:
doPost()
request.setCharacterEncoding("utf-8");
doGet()
String name = req.getParameter("name");
try {
String newname = new String(name.getBytes("iso-8859-1"),"utf-8");
3、response.sendRedirect("...?name=名字");
  而浏览器没有正常显示/login.jsp?info=   后面的汉字不见了。。。
  要进行转码:?name=%E9%9A%8F%E8%BA%AB%E9%82%AE
  rep.sendRedirect(path+"/pages/login.jsp?info="+new String("随身".getBytes("utf-8"),"iso-8859-1"));
  String info = (String)request.getParameter("info");
  String newinfo = new String(info.getBytes("iso-8859-1"),"utf-8");

session只要接收的不是乱码,就不会出现乱码。

文件下载时中文乱码
response.setHeader("Content-Disposition", "attachment;filename=名字.jpg");
解决方法:
String name = new String("名字.jpg".getBytes("utf-8"),"iso-8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+name);

常用编码:gbk,gb2312,iso-8859-1,utf-8
分享到:
评论

相关推荐

    javax.servlet-api-3.0.1.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    一个在线报名系统

    &lt;servlet-class&gt;servlet.registerServlet&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;registerServlet&lt;/servlet-name&gt; &lt;url-pattern&gt;/servlet/registerServlet&lt;/url-pattern&gt; &lt;/servlet-...

    servlet-api-3.1-源代码.zip

    servlet源代码本来就是开放的,CSDN居然那么多人要积分才能下载,仅仅是搬运而已。本资源是来自从Maven的servlet-api-3.1源代码,原地址还有servlet-api、servlet-api-doc,本资源仅仅下载了源代码的部分,需要的...

    jakarta.servlet-api-4.0.4-API文档-中文版.zip

    赠送jar包:jakarta.servlet-api-4.0.4.jar; 赠送原API文档:jakarta.servlet-api-4.0.4-javadoc.jar; 赠送源代码:jakarta.servlet-api-4.0.4-sources.jar; 赠送Maven依赖信息文件:jakarta.servlet-api-4.0.4....

    javax.servlet-api-3.1.0.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    javax.servlet-api-3.1.0-sources.zip

    下地址https://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.1.0/ 各个版本都有 javax.servlet-api-3.1.0-sources.jar

    javax.servlet-api-4.0.0-API文档-中文版.zip

    赠送jar包:javax.servlet-api-4.0.0.jar; 赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; ...

    servlet-api.jar 下载地址

    servlet-api.jar 下载地址servlet-api.jar 下载地址servlet-api.jar 下载地址servlet-api.jar 下载地址servlet-api.jar 下载地址

    jersey-container-servlet-core-2.22.2-API文档-中文版.zip

    标签:container、glassfish、core、jersey、servlet、containers、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档

    javax.servlet-api-4.0.1.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    简单spring MVC 配置

    &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;test&lt;/servlet-name&gt; &lt;url-pattern&gt;...

    javaEE servlet-api

    javaEE servlet-apiServlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面

    javax.servlet-api-4.0.1-API文档-中英对照版.zip

    包含翻译后的API文档:javax.servlet-api-4.0.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:javax.servlet:javax.servlet-api:4.0.1; 标签:javax、servlet、api、jar包、java、中英对照文档; 使用...

    xfire的使用详解

    &lt;servlet-class&gt;org.codehaus.xfire.spring.XFireSpringServlet&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;!-- 用来管理Webservice的Servlet --&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt; &lt;url-...

    Axsis and XFire Demo src code

    &lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt; &lt;servlet-class&gt; org.apache.axis.transport.http.AxisServlet &lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet&gt; &lt;servlet-name&gt;AdminServlet&lt;/servlet-name&gt; ...

    jakarta.servlet-api-4.0.4-API文档-中英对照版.zip

    包含翻译后的API文档:jakarta.servlet-api-4.0.4-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:jakarta.servlet:jakarta.servlet-api:4.0.4; 标签:servlet、api、jakarta、jar包、java、中英对照...

    jfreechart使用手册

    &lt;servlet-class&gt;org.jfree.chart.servlet.DisplayChart&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt; &lt;url-pattern&gt;/servlet/DisplayChart&lt;/url-pattern&gt; &lt;/...

    cxf.xml,cxf-servlet.xml,cxf-extension-soap.xml

    &lt;import resource="classpath:META-INF/cxf/cxf.xml"/&gt; &lt;import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/&gt; &lt;import resource="classpath:META-INF/cxf/cxf-servlet.xml"/&gt;

    servlet-api.jar

    servlet-api.jar

    javax.servlet-3.0.0.v201112011016-API文档-中文版.zip

    赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...

Global site tag (gtag.js) - Google Analytics