一、重定向与转发的区别
1、URL地址变和不变:转发不变,重定向变;即:
2、重定向实际上产生了两次请求
转发只有一次请求
重定向: 发送请求 -->服务器运行-->响应请求,返回给浏览器一个新的地址与响应码-->浏览器根据响应码,判定该响应为重定向,自动发送一个新的请求给服务器,请求地址为之前返回的地址-->服务器运行-->响应请求给浏览器
转发:发送请求 -->服务器运行-->进行请求的重新设置,例如通过request.setAttribute(name,value)-->根据转发的地址,获取该地址的网页-->响应请求给浏览器
重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。
二、转发include与forward的区别:forward方法是把请求的内容转发到另外的一个servlet.而include是把另一个servlet处理过后的内容拿过来.
如果写上response.getwriter(0.print("haha");
include会在页面上显示haha,而forward不显,这就是区别!哈哈
三、ServletContext读取资源三种方式
1、使用getServletContext().getResourceAsStream(路径)去读资源文件,这个路径是相对于web应用的根目录。
如://第一种方式读取外部的资源文件
InputStream is = context.getResourceAsStream("/WEB-INF/classes/res/a.jpg");
2、传统方式:BufferedReader bf = new BuffereReader(new FileReader(path));这个是重点
path=context.getRealPath("WEB-INF/classes/db.properties");这个是重点
3、第三种方式:URL url = context.getResource("WEB-INF/classes/db.properties");
InputStream is = url.openStream();
四、中文乱码问题,出现乱码的解决方案:
1、 以post方法提交的数据中有中文字符, 可以在获取请求参数值之前,调用request.setCharacterEncoding(“UTF-8”),指定请求正文使用的字符编码是UTF-8;
2、在向浏览器发送数据之前调用 response.setHeader("Content-Type", "text/html;charset=UTF-8");这是最好的一种解决方法
3、用OutputStream输出数字时出现乱码解决:response.getOutputStream().write((97+"").getBytes()); //97任意数字
4、response.getOutputStream().write("<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">".getBytes());
response.getOutputStream().write("中国".getBytes("UTF-8"))。
当下载以中文名称的文件时出现乱码的解决方案:
设置消息头
response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(file.getName(),"UTF-8"));
//URLEncoder.encode(String,String)方法是:使用指定的编码机制将字符串转换为application/x-www-form-urlencoded
格式。
五、随机图片
1、随机图片的产生:
/1、通知浏览器以图片方式打开
response.setHeader("Content-Type", "image/jpeg");
//2、创建图片
BufferedImage image=new BufferedImage(WIDTH, HEIGHT, IMAGETYPE);
//3、得到图型
Graphics g=image.getGraphics();
//4、设置图片背景色
setBackground(g);
//向图片上写边框
setBorder(g);
//向图片上写干扰线
setRandomLine(g);
//向图片上写数据
setFont(g);
//8、把图片写给浏览器
ImageIO.write(image, "JPEG", os);
2、产生图片时的问题:就每次刷新页面的时候验证码不变
解决方案://清除浏览器缓存
response.setIntHeader("expires", 0);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
//可能采用的协议不一样,所以三个接合使用,缺一不可
六、request常用方法
获得客户机信息
•getRequestURL方法返回客户端发出请求时的完整URL。
•getRequestURI方法返回请求行中的资源名部分。
•getQueryString 方法返回请求行中的参数部分。
•getRemoteAddr方法返回发出请求的客户机的IP地址
•getRemoteHost方法返回发出请求的客户机的完整主机名
•getRemotePort方法返回客户机所使用的网络端口号
•getLocalAddr方法返回WEB服务器的IP地址。
•getLocalName方法返回WEB服务器的主机名
•getMethod得到客户机请求方式
获得客户机请求头
•getHead(name)方法
•getHeaders(String name)方法
•getHeaderNames方法
获得客户机请求参数(客户端提交的数据)
•getParameter(name)方法
•getParameterValues(String name)方法
•getParameterNames方法
•getParameterMap方法 //
七、防盗链的实现
//获取当前页是从哪里个页面来的,如果不是则盗链本站
String url=request.getHeader("Referer");
if(url==null||!url.startsWith(http://localhost)){
response.sendRedirect("./index.html");
}else{
response.sendRedirect("./java.html");
}
分享到:
相关推荐
对Servlet基础知识进行总结,适合新手入门用,里面详细的介绍了Servlet运行原理以及如何创建等
jsp servlet开发总结文档 jsp Servlet总结jsp Servlet总结jsp Servlet总结
里边讲到servlet的常用方法,并对其做了简明的说明
servlet-servlet 登录小程序
自己总结的servlet与jsp部分 希望对大家有所帮助
自己总结的一些Servlet知识点!希望对大家有用!
servlet的小demo
JavaWeb-Servlet学习与总结
黑马 程序员-方立勋老师-javaWeb开发-03-Web开发入门和 04-Servlet开发和ServletConfig和ServletContex对象 知识总结记录
servlet学习总结
JSP & Servlet 技术总结 JSP技术总结 2 1. JSP页面元素构成 2 2. JSP脚本元素 2 3. 注释 2 4. JSP指令 2 5. JSP动作元素 3 6. JSP内置对象 5 7. JSP内置对象及其作用 5 8. 获取页面参数 5 9. 重定向...
servlet jsp总结servlet jsp总结servlet jsp总结servlet jsp总结
jsp&servlet知识点总结
jsp和servlet知识点总结
java servlet 微信点餐小程序 微信小程序 mysql 毕设
关于servlet一些总结,包括了基础的
Servlet详解 Servlet详解 Servlet详解
一、实验目的 1.熟悉JavaBean的开发过程。 2.掌握Servlet的开发过程。 二、实验学时 2H 三、实验性质 综合性实验
刚刚接触java时做的日志管理系统,做的很简单,适合初学着 servlet servlet servlet servlet servlet日志管理系统 servlet servlet servlet servlet servlet日志管理系统 servlet servlet servlet servlet servlet...
关于Servlet状态管理的相关基础知识点的总结和代码。主要是Cookie和Session实现状态管理