--------------jsp篇
	jsp, java server page
	jsp页面是在服务器上运行的一个页面
	动态网页
		与后台有数据交互的页面
	与其他语言的区别:
		jsp 使用java语言进行开发, 安全性高, 适合大型项目, 企业级的文本应用
			分布式项目, 服务器集群, hadoop
		asp.net 使用c#, .Net平台, 简单易用, 因为不开源, 所以安全性低, 并且不能跨平台
			使用.Net开发项目, 最好使用windows系统和sqlserver数据库
		php 简单 高效 成本低 开发周期短, 适合中小型企业的web应用开发
			php的黄金搭档---(LAMP: linux, Apache, Mysql, PHP)
	Tomcat介绍
		conf---Tomcat的所有配置
		webapps---需要部署的项目
		work---Tomcat运行之后编译的文件
		lib运行Tomcat服务器所需要的 jar 文件
	运行项目的虚拟路径
		右键点击项目 --> properties --> web project settings --> context root 更改这个名字就可以修改项目的虚拟路径
		改完以后要重新部署项目并且重新启动Tomcat
	jsp的组成元素;
		1, 指令
			page指令
				<%@ page ..........%>
					language---当前页面使用的语言:java
					import---当前页面引入的类库, 默认是啥也不引入
					contentType---text/html; charset=‘字符集‘
						iso-8859-1是字符集的默认值, 纯英文的字符集
			include指令
			taglib指令
		2, 表达式
			<%=变量名%>
		3, 脚本
			<% 代码内容 %>
		4, 声明
			<%! 代码声明 %>
		5, 注释
			可见<!--  -->
			不可见<%--  --%>
			脚本中使用的注释
			/**/, //
		?6, 一些静态内容
	jsp九大内置对象:
		5, response 响应对象
		6, page 当前页面对象
		7, out 输出流对象
		8, exception 异常
		9, config ServletConfig/FilterConfig对象
		作用域(每一种作用域的生命周期是不一样的):
		1, application 全局作用域
		2, session 会话作用域
		3, request 请求作用域
		4, pageContext 页面作用域
		优先级(按照生命周期的长短):
		application > session > request > pageContext
	
	页面中的form表单提交方式:
		post:
			提交内容不可见, 没有长度限制
		get:
			有长度限制, 提交内容在地址栏可见
	
	request对象:
		request对象是HttpServletRequest这个类的实例
		常用方法:
			String getParameter(String name)---返回name指定的参数的值
			String[] getParameterValues(String name)---返回一个数组, 是包含那个参数名的所有的人
			void setAttribute(String, Object)---设置某个作用域中的属性
			Object getAttribute(String name)---获取某个作用域中的属性
			String getServerName()---返回请求服务器的主机名
			String getContentType()---返回请求体的MIME类型
			String getprotocol()---返回请求用的协议类型和版本号
			int getServerPort()---获取服务器的端口号
			int getContentLength()---返回请求体的长度(单位是字节)
			String getRemoteAddr()---返回发送此请求的客户端的IP地址
			String getRealPath(String path)---返回传入的这个路径的物理路径
			String getContextPath()---返回上下文路径
		解决request中出现中文乱码的问题
			post方式:
				通过使用request.setCharacterEncoding("utf-8")来设置
			get方式:
				通过修改Tomcat服务器中的server.xml配置文件来设置
	
	response对象
		response对象是HttpServletResponse的实例
		常用方法;
			setCharacterEncoding(String name)---设置响应页面使用的字符编码
			setContentType("text/html; charset=utf-8")---设置(MIME类型)请求头
			response.getWriter().append(String content)---向页面输出一段字符串
				out对象的类型是JspWriter, 而response.getWriter()是一个PrintWriter, out对象也可以通过pageContext.getOut()获得, 这两个对象的类型不一样
				
				out.print(null);会抛出异常, PrintWriter.print(null)不会抛出异常
JspWriter是一个抽象类, PrintWriter是一个继承了Writer的普通类
getWriter()方法可以在页面上输出一串字符, out也是一个输出对象, 两者的区别在于, getWriter()方法的执行结果, 总是优先于out对象, 可以使用out.flush()方法, 强行属性缓冲区的内容, 将out对象的输出结果先输出出来
				造成这种现象的原因:
					out对象实际上对PrintWriter是有依赖的, 他需要先将需要输出的内容存到response的缓冲区里面, 然后等待jsp页面中的out满足一定条件之后, 才会调用输出的方法把内容直接输出到页面上
而PrintWriter是可以直接输出出来的
		转发和重定向(面试98%会问)
			response.sendRedirect(String location)---请求重定向
				客户端行为, 从本质上讲相当于两次请求, 第一次请求的对象不会被保存, 地址栏的Url地址会改变
			request.getRequestDispatcher().forward(request, response)---请求转发
				服务器行为, 相当于一次请求, 转发后请求对象会被保存, 地址栏url不会改变
			举例说明: 办证
	Session对象
		session指的是用户在进入一个网站开始到关闭浏览器的时间, Tomcai服务器默认的session有效时间是30分钟, 也就是说, 打开一个网站30分钟之内没有动作, session对象同样也会失效
		session存在服务器的内存中, 服务器中不同的用户对应的session也是不同的, 所以服务器用来判断当前登录的用户是否是同一个的时候就需要session
		session对象是HttpSession的实例
		常用方法:
			long getCreationTime()---返回session对象创建的时间
			String getId()---返回一个sessionid, 是唯一的
			void setAttribute()---设置一个属性和一个属性值
			Object getAttribute()---获取某个属性的属性值
			String[] getValueNames()---以数组的形式获取session对象中所有可用属性的属性名
			setMaxInactiveInterval()---设置session经过多长时间之后失效(默认30分钟)
			getMaxInactiveInterval()---设置session的失效时间(单位是秒)
		session的生命周期:
			创建: 当用户第一次访问某个jsp或者servlet的时候, 服务器就会为当前的访问创建一个session, 并生成一个sessionId, 每次客户端向服务器发送请求的时候, 都会将这个sessionId带过去进行验证
活动: 在这个页面的各种活动, 比如通过超级连接打开另一个页面, 或者进行各种增删改查的操作, session失效除非要等到浏览器的相关页面全部关闭, 或者session超时, 当再次访问的时候会创建一个新的session, 但是原来的session还会存在, 只不过没有任何请求再带着那个旧的sessionId让服务器去验证了
			销毁: 
				三种方法可以销毁session
					1, 调用session.invalidate()方法
					2, session自己过期了
						设置session过期时间也可以在web.xml中设置
							<session-conf>
								<session-timeout>
									10<!-- 单位是分钟 ! -->
								</session-timeout>
							</session-conf>
					3, 服务器重新启动
原文:http://www.cnblogs.com/yuanlaihenkuang/p/7109481.html