servlet部分知识总结
1.解决中文显示乱码问题:
对于servlet :servlet里面加入代码response.setContentType("text/html;chartset=utf-8");
告诉tomcat不要使用默认的编码方式(iso-8859-1)来应答客户端,而要使用utf-8,
PrintWriter 写入汉语就不会出现乱码,也就是在jsp显示的时候不会乱码。
对于jsp :<%@page contentType = "text/html;chartset=utf-8"%>
jsp本质上是一个servlet ,所以上面两个设置本质上是一样的。
servlet获取值的中文乱码问题:
(1).有效方法:
String Luanmaname = request.getParamater("name"); //此name乱码
String trueName = new String(Luanmaname.getBytes("iso-8859-1"),"utf-8");//此name不乱码
但是数据过多的时候一个个处理麻烦
(2).针对post有效
request.setCharacterEncode("utf-8");//需要放在request.getParamater前面才能起作用
(3).针对get有效(在sever.xml里面设置)
<Connector port = "8080" ………… URIEncoding = "utf-8"/>
2.比较response.setContentType("text/html;chartset=utf-8")与request.setCharacterEncode("utf-8")的区别:
前者是对服务器向客户端应答的时候设置字符类型,主要对后面的PrintWriter out = response.getWriter();
out.write("程序员");这个write设置的,一般正式开发PrintWriter用的较少,此设置相应用的也较少
而后者是服务器端获取客户端的内容,来设置字符类型。因为tomcat也就是服务器端的编码方式是iso-859-1
而且此设置只对post提交有效,要放在request.getParamater前面才可以影响到此方法
3.jsp页面的
<%@page contentType = "text/html;chartset=utf-8"%> 是给服务器看的
<meta http-equiv = "Content-Type" content = "text/html;charset="utf-8">是给客户端看的
4.jsp的请求转发与重定向:
请求转发:
String name = request.getParamater("name");
RequestDispatcher rd = request.getRequestDispatcher("/selectservlet");//要跳转的servlet的url-pattern
rd.forward(request,response);
转发之后,request中的name还可以获取,就是原来的request和response还存在
重定向:
String name = request.getParamater("name");
response.sendRedirect(request.getContextPath()+"/selectServlet");
或者response.sendRedirect("selectServlet");//这样写也可以,但不建议这样写
带参数response.sendRedirect(request.getContextPath()+"/selectServlet?name="+name);
两者的区别:
请求转发可以传参数,数据不会丢失,重定向不可以,数据会丢失
请求转发地址栏的url不会改变,重定向会发生变化
请求转发不需要加webapp名称,重定向或者加webapp名称,或者不加/
请求转发只能在一个web应用程序内进行,重定向可以到其他应用程序
请求转发后面调用的方法类别与前面相同,而重定向全部变为get请求,与之前的没有关系
请求转发是一次请求,重定向是多次请求(生产多个request对象)
5.paramater 与 attribute 区别:
(1).paramater是客户端带过来的(客户端请求参数),attribute是在服务器端放入的数据
(2).paramater数据时只读的,attribute数值是可读写的
(3).getParamater返回的数值是string类型,而getAttribute 返回的是object类型,需要强转
6.修改session的失效时间
(1).在servlet代码里面加入session.setMaxInactiveInterval(40);40s失效
(2).在tomcat的conf下设置sever.xml
<session-config>
<session-timeout>1</session-timeout> 1分钟失效,默认是30 ,也就是30分钟失效
</session-config>
但是会影响所有的项目
(3).在本项目的web.xml里面设置
<session-config>
<session-timeout>1</session-timeout> 1分钟失效
</session-config>
删除session : session.invalidate();
7.js里面获取java代码request.setAttribute("aaa",name);的值
(1).取变量值
var a = '<%=request.getAttribute("aaa")%>' ;
(2).也可以将这个值放在页面上.再取出来.
<input type="hidden" value="<%=request.getAttribute("aaa")%>" id="aaa"/>
var a = document.getElementById('aaa').value ;
8.request对象和session对象的最大区别是生命周期
request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一起请求 当请求完毕之后,request里边的内容也将被释放
而session的生命周期也是针对一个客户端 但是却是在别人设置的会话周期内(一般是20-30分钟) session里边的内容将一直存在 即便关闭了这个客户端浏览器 session也不一定会马上释放掉的
request和session的优点和缺点很明显
request占用资源比较少 安全性也比较高 可是相对来说 缺乏持续性
而session则相对来说 对资源的消耗会大点 安全性相对来说也会稍微低点 可是它能实现比如会话跟踪技术 个有优点和缺点
不过 个人觉得 如果可以使用request的情况下 尽量使用request 因为相对于服务器来说 资源的消耗这个问题还是比较重要的
request HTTP请求开始到结束这段时间
session HTTP会话开始到结束这段时间
application 服务器启动到停止这段时间
9.get post 区别
(1).安全性 get < post get提交的数据会在浏览器地址栏显示
(2).提交内容大小 get < post 前者数据不能超过2k 后者不受限制,建议不大于64K
(3).响应速度 get < post get要求服务器立即请求,post请求可能形成一个队列请求
10.cookie与session的区别:
(1).存在的位置:cookie保存在客户端,session保存在服务器端
(2).安全性:cookie的安全性比session弱
(3).网络传输量:cookie通过网络在客户端和服务器之间传输,而session保存在服务器端,不需要传输
(4).生命周期(以20分钟为例)
cookie的生命周期是累计的,从创建时开始计时,20分钟后cookie生命周期结束,cookie就无效
session的生命周期是间隔的,从创建时开始计时,如果在20分钟内无访问,则session失效,如果在20分钟内,比如说19分钟访问session,
它的生命周期重新开始计算
另外。关机会影响session生命周期,但是对cookie无影响
servlet部分知识总结的更多相关文章
- Servlet基本知识
Servlet基本知识 1.IDEA创建第一个Servlet程序xing 这里说明如何使用 IDEA Ultimate 2020.1.3版本来新建第一个web程序.参考 MoonChasing 1.1 ...
- 面试之jsp、Servlet相关知识——生命周期, 区别等
1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...
- Servlet基础知识
基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...
- Servlet基本知识总结
Servlet 简介 Servlet是什么? Servlet是一个Java编写的程序,此程序是基于Http协议的,并运行在web服务器上或者应用服务器上.它主要是作为web浏览器或其他Http客户端的 ...
- Servlet基础知识总结
Servlet是JavaWeb应用开发的核心组件.Servlet运行在Servlet容器中(例如最常用的Tomcat),它可以为各种客户请求提供相应服务.Servlet可以轻松完成以下任务: 动态生成 ...
- JSP SERVLET 基础知识
jsp(java server page)和servlet是JAVA EE规范的两个基本成员,是JAVA WEB开发的重点也是基础知识.JSP本质上也需要编译成SERVLET运行. JSP比较简单,可 ...
- Tomcat是如何加载Spring和SpringMVC及Servlet相关知识
概述 大家是否清楚,Tomcat是如何加载Spring和SpringMVC,今天我们就弄清下这个过程(记录最关键的东西) 其中会涉及到大大小小的知识,包括加载时候的设计模式,Servlet知识等,看了 ...
- 第一次接触servlet的知识
什么是Servlet?① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 Servlet相关包的介绍--javax. ...
- Servlet深层知识
一.ServletContext实现请求转发1.得到请求分发器:RequestDispatcherServletContext.getRequestDispatcher(String path):pa ...
随机推荐
- vs------各种错误解决方法
错误:命名空间System.Net中不存在类型或命名空间名“Http”,或工程里面“引用”的文件太少 转载:http://www.asp.net/mvc/mvc4 错误:LD.exe 已退出,代码为- ...
- Quagga服务器安装和配置
使用本地源 一.安装软件包 # yum install quagga-0.99.15-7.el6_3.2.x86_64.rpm 或rpm # ls /etc/quagga/ bgpd.conf.s ...
- php Hash Table(三) Hash Table初始化
HashTable初始化,在使用HashTable之前要先执行初始化,下边就看看初始化时都做了什么, Zend/zend_hash.c static const Bucket *uninitializ ...
- Python基础之【第二篇】
一.作用域 对作用域来说,只要变量在内存里面存在就可以使用: ==: name = 'saneri' print name 二.三元运算 result = 值1 if 条件 else 值2 如果条件为 ...
- 正确运用synchronized和二次判断 实现多线程安全
正确运用synchronized和二次判断 实现多线程安全,做出高效二符合预期的程序,特别是多个线程跑一个对象的时候,如下图所示: 测试代码如下: 特别注意if(shutdownRequested) ...
- 新浪微博客户端(63)-使用block进行链式编程
Person.h #import <Foundation/Foundation.h> @interface Person : NSObject - (Person *(^)())study ...
- 《C++编程规范》
1.使用编译器的最高警告级别,成功的构建应该是无声无息的(没有警告的). 如果确定是无害警告,且是无法修改的第三方头文件引起的,可以用自己的头文件包装起来,并有选择性的关闭警告,然后项目中使用该头文件 ...
- RTX二次开发(一)(基于ASP.NET)
腾讯通RTX是(Real Time eXpert)是腾讯公司推出的企业级实时通信平台,致力于帮助企业提高运作效率.降低沟通成本.拓展商业机会,是一种高度可管理.低成本.易部署的IT平台.RTX集成了丰 ...
- css3 实现逐帧动画
css3 实现逐帧动画 实现逐帧动画需要使用到的是Animation动画,该CSS3的Animation有八个属性:分别是如下:1: animation-name2: animation-durati ...
- 大熊君大话NodeJS之开篇------Why NodeJS(将Javascript进行到底)
一,开篇分析 大家好啊,大熊君又来啦(*^__^*) 嘻嘻……,之前我写过一系列关于JS(OOP与设计模式)方面的文章,反响还好,其实这也是对我本人最大的鼓励,于是我决定我要将JavaScript进行 ...