servlet部分知识总结

By | 07月27日
Advertisement

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无影响

Similar Posts:

  • 第7天:Servlet相关知识(三)

    Servlet相关知识3 ServletConfig接口: 容器在调用init()方法时,会事先创建好该对象,以参数的形式传递给servlet对象. 该接口定义了获取servlet配置参数的方法 String getInitParameter(String name); 在web.xml中可以配置servlet的初始化参数值: <servlet> <servlet-name>HelloWord</servlet-name> <servlet-class>/s

  • Servlet基本知识

    1.对于一个Servlet的每次访问请求,Servelt引擎都会创建一个用于封装http请求消息的对象和一个代表http响应消息的对象,然后调用此Servlet对象的service()方法,并将这两个对象作为参数传递给该方法.其中,作为参数传递进来的响应对象就是HttpServletResponse()对象,作为参数传递进来的请求消息对象是HttpServletRequest()对象,在service()方法内部可调用他们来处理. 2.ServletContext 被 Servlet 程序用来与

  • javaEE中servlet基础知识--生命周期和实现的接口

    (图片来至马士兵的视频上的PPT) 方法init(ServletConfig) 其中ServletConfig 表示web.xml配置信息 Servlet程序都是由容器(tomcat)执行,即我们编程只要继承继承相应的类,实现相应的接口. JSP自动生成Servlet,编译成Class文件.最后我们要编写的是JSP.或者是现在很多的开源框架提供的API 77种请求的方法中,只有doGet()和doPost() 常用 Interface HttpServletRequest 和Interface

  • Servlet 一些知识记录

    Content-Length的处理方式:http://blog.csdn.net/nairuohe/article/details/5857591 HTTP协议之Chunked解析:http://hi.baidu.com/zkheartboy/blog/item/9216a0fd05591e1508244d74.html http://hi.baidu.com/lbxthinker/blog/item/3a7abffc9759c50709244d96.html

  • Servlet中的请求转发与包含

    上一篇博客简单的介绍了一下有关Servlet的知识,从宏观上能够了解Servlet是干嘛的,这篇就来谈一下在Servlet中经常用到的两个概念请求转发与包含. 1.什么是请求转发与包含 在上一篇博客中我们大致了解了,Servlet是服务端的程序,用来接收客户端发过来的请求信息并处理信息.那么请求转发和包含就是表示由多个Servlet共同处理一个请求.比如说,客户端A向你挑战打架,如果你感觉自己不行的话,就可以转发给B,让B替你处理:或者你和B同志共同应对A的挑战,这就是包含.具体的流程图如下.

  • 程序员应具备的三要素:知识、经验、技能

    怎样才算是一个合格的程序员呢,我想要从三个方面来研究这个问题. 知识:写在书本上的都是知识,无论它怎么来的,在书上的就都是知识.程序员需要掌握大量的知识才行.作为java程序员,你需要学习: java 的基础知识 web开发的知识,如jsp.servlet 数据库知识,主要是sql 框架知识,如struts.hibernate.webwork.spring 知识是用来指导实践的,多数的知识只是提供原理和规则,但并没有指出怎么使用这些原理和规则,也正是因为这样,少量的知识可以指导无限的实践. 通过

  • JSP/Servlet应该学习什么

    概述 DRP的学习战线拉得很长,因为中途学习.net而停止了java的学习.停止java,学习.net,使.net的知识更加的扎实了,也使我再继续学习DRP时,学习目标变得更加的明确了. JSP/Servlet应该学习什么? Java的IDE 工欲善其事必先利其器,想着写一个jsp/Servlet的小Demo,首先的问题就是学会如何使用IDE,其中包括第三方jar包的引入,第三方jar包和源代码的关联,Tomcat的集成,部署Web程序等,这块内容与我们学习具体JSP/Servlet的知识没有多

  • 毕业设计2(解决了后台servlet的配置问题)

    今天没有做太多的东西,主要是想要建立起后台,用于登录和回传数据,遇到的问题主要是一些IDE和servlet的问题, 第一就是tomcat的server.xml的设置问题,怎样将你的webapp通过server.xml的配置文件配置到tomcat上,因为之前每次重装tomcat就要重新百度和谷歌这个问题,现在就在这里记下好了: 主要是在</Host>标签上面加上这个元素:<Context path="/test" docBase="E:object dataj

  • 【Java】Servlet调用流程

    最近在学习一个DRP的项目,初次学习Servlet,老师讲解的很详细,这篇博客首先对Servlet进行一下简单的介绍,然后简单总结一下Servlet的调用流程. Servlet简单理解: Servlet是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者. 以登录为例介绍数据传送流程: 其次来介绍一下To

  • JAVA Servlet的应用详解

    以下Servlet的知识是我在网络上面的总结,如有错误,希望指出. 每个 servlet 都必须在 web.xml 中定义并进行 URL 映射配置, <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.su

Tags: