This is my Blog!!Welcome to you!!
【分享个人java学习心得和技术问题汇总】

servlet编程

方式一(重定向或外部跳):

方式二(请求转发或内部跳):

请求转发器:通过request对象的getRequestDispatcher(“跳转的页面”)方法;获取请求转发器对象RequestDispatcher,使用该对象的forward()方法或者include()方法进行转发。

外部跳和内部跳的区别:

内部跳,浏览器的地址栏不会发生改变;外部跳,客户端地址栏发生改变

内部跳,客户端请求一次;外部跳,客户端会重新发送一次新的请求。

内部跳,request中的数据可以传递到下一个页面;外部跳,request中数据会丢失。

乱码出现时期:

请求时 request

应答时 response

通过两个对象的setCharacterEncoding(“编码”)方法进行字符集指定:

request对象的该方法是对请求体中的数据进行编码。所以对post请求有效。而且还要在获取参数前调用该方法。

response对象的该方法对响应数据进行编码。也必须在getWriter之前调用。

如果表单是get方式提交,处理中文时,必须一个一个的处理;

get方式提交,中文会在浏览器的地址栏被编码(ISO-8859-1)

所以处理中文如下:

解决乱码问题中,设置请求内容的字符编码?

解决乱码问题中,设置输出内容及字符编码?

或者

什么是会话?

生活中:两个人,一次问答的过程,称为一次会话。

Web程序中:浏览器和服务器(TOMCAT),一次请求和响应的过程,成为会话。

什么是会话跟踪?

在多次会话的过程中,服务器要记录客户端的相关信息。这就叫做会话跟踪。

为什么需要会话跟踪?

因为Web程序使用的HTTP协议进行通信;http协议是一个无状态的协议,不会保留客户端的信息;如果需要让服务器保留客户端相关信息,就必须使用会话跟踪技术。

HttpServletRequest getSession() 方法用于表示创建会话,是会话跟踪的核心对象,在Servlet中获取跟踪对象HttpSession,其语法如下:

或者

如果没有与当前请求关联的会话,则 getSession() 方法用于创建会话。

如果布尔值为 true 且当前没有与请求关联的会话,则使用 getSession(boolean value) 创建会话。如果布尔值为 false,如果没有与当前请求关联的会话,返回null

方法名描述

setAttribute(name,value)    将数据存放在session

getAttribute(name)          根据名字从session中获取数据

removeAttribute(name)       根据名字从session中删除指定的数据

getMaxInactiveInterval()    返回session的最大有效时间(单位秒)默认30分钟

setMaxInactiveInterval      (秒数)设置session的最大有效时间(时间值越小性能越高)

invalidate()                使session立即失效(session中的数据被清除);

一般用在退出系统。

URL(统一资源定位) 重写技术将一个唯一的会话 ID 添加到 URL 结尾,以标识该会话。例如,重写以下 URL 传递会话 jsessionid=5EF46DFRD98EFEFHOKH

原始 URLhttp://server:port/servlet/Rewritten

重写的 URL

http://server:port/servlet/Rewritten?jsessionid=5EF46DFRD98EFEFHOKH

注意:当客户端禁用所有Cookie写入时,必须使用URL重写,才能完成会话跟踪

由于Servlet默认是以多线程模式执行的,这往往造成编写的程序在少量用户访问时没有任何问题,而在并发用户上升到一定值,就会经常出现一些莫名奇妙的问题。

Servlet与线程安全


实现SingleThreadModel接口

 

2、同步对共享数据的操作

3、避免使用实例变量

 

未经允许不得转载:Java学习 » servlet编程

分享到:更多 ()

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    [发红包]要看我是双性恋大尺度照片,就到→ http://www.nanrenji.xyz

    康竹慧2年前 (2016-01-09)回复