JSP页面元素:HTML、java代码(就是指脚本Scriptlet)、指令、注释
a.脚本Scriptlet
- <%
 声明局部变量,java语句
 %>
 2.<%! 全局变量,定义方法 %>
 3.<%= 输出表达式 %>
一般而言,修改web.xml、配置文件、java需要重启tomcat服务
 但是修改Jsp\html\js,不需要重启
注意:out.print(),out,println()不能回车;要是想回车:“<br>”,即out.print() <%=%>可以直接解析html代码
b.指令
<%@ page  contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>page指令:<%@ page…%>
 page指定的属性:
 language:jsp页面使用的脚本语言
 import:导入类
 pageEncoding:jsp文件自身编码 jsp->java
 contentType:浏览器解析jsp编码
c.注释
 html注释: 
 可以被客户通过浏览器查看源码所观察到,另外两个不行
 java注释:// /* */ 放在脚本元素中
 jsp注释:<%— --%>
d.JSP内置对象(自带的,不需要new也可以使用的对象)
- out:输出对象,向客户端输出内容
- pageContext JSP页面容器
- request:请求对象;存储客户端向服务端发送的请求消息
 request对象的常见方法:
 String getParameter(String name):根据请求的字段名key(input标签的name),反回字段值value(input标签的value)。
 String getParameterValue(String name):根据请求的字段返回多个字段值value
 void setCharacterEncoding(“编码格式utf-8”):设置请求编码(tomcat7之前默认iso-8859-1,tomcat8以后默认utf-8)
 getRequestDispatch(“b.jsp”).forward(request,response); :请求转发的方式跳转页面A->B
 getServerContext():获取项目中的ServerletContext对象
 示例:注册页面registet.jsp 展示页面show.jsp
 http://localhost:8080/jsp%E5%AD%A6%E4%B9%A0/show.jsp?uname=%E6%B1%9F%E5%85%B4%E9%B8%BF&upwd=654321&uage=236&uhobbies=%E7%AF%AE%E7%90%83&uhobbies=%E4%B9%92%E4%B9%93%E7%90%83 
- response
 提供的方法:
 void addCookie(Cookie cookie):服务器向客户端增加cookie对象
 void sendRedirect(String location) throw IOException:页面跳转的一种方式(重定向)
 void setContentType(String type):设置服务器端响应的编码(设置服务端的contentType类型)
请求转发和重定向的区别
 地址栏是否改变:请求转发不变(check.jsp);重定向改变(success.jsp)
 是否保留第一次请求时的数据:请求转发保留;重定向不保留
 请求的次数:请求转发:一次;重定位:两次
 跳转发生的位置:服务端 客户端发出第二次跳转
重定向和请求转发的区别
示例:登录
 login.jsp–>check.jsp–>success.jsp
 5. session
 session(服务端):会话–就是指一次操作;从开始到结束;比方说购物:浏览,付款,退出
session机制:客户端第一次请求服务端时,(jsessionid—sessionid匹配)服务端会产生一个session对象(用于保存该客户端的信息);并且每一个session对象都会有一个唯一的sessionID(用于区分其他的session);服务端会产生一个cookie,并且它的name=“JESSIONID”,value=“服务端sessionID的值”;然后服务端在响应客户端时将这个cookie发送给客户端,自此客户端就有了一个cookie(JESSIONID);因此客户端可以和服务端的session一一对应起来
客户端第二/n次请求服务端时:服务端会先用客户端的Cookie中的JSESSIONID 去服务端的session中匹配sessionid
 a.session存储在服务端
 b.session是在同一个客户请求是共享
session的方法:
 String getId():获取sessionID
 boolean isNew():判断是否是新用户(第一次访问)
 void invalidate():使session失效(退出登录、注销)
void setAttribute():
Object getAttribute(): value是Object对象;这点需要注意,而Cookie保存的键值对都是String类型的
void setMaxInactiveInterval(秒):设置最大的有效非活动时间
 int getMaxInactiveInterval():获取最大的有消费活动时间
Cookie(客户端,不是内置对象,需要new):Cookie是又服务端生成的,再发送给客户端保存。相当于本地缓存的作用:比方说你在电脑上看一部电影,第一看的时候从浏览器(客户端)获取服务端的mp4的资源,使用流量;看完之后服务端会把mp4的资源回给客户端。
 作用:提高访问服务端的效率,但是安全性较差
 Cookie:key=value
 javax.servlet.http.Cookie
 public Cookie(String name,String value)
 string getName():获取name
 string getValue():获取value
 void setMaxAge(int expiry):最大有效期(秒);以上方法用于在服务端产生Cookie
服务端准备Cookie:
 response.addCookie(Cookie cookie) 页面跳转(请求转发和重定位都可以)
客户端获取Cookie:request.getCookies();
主要:a.服务器增加cookies:response对象;客户端获取对象:request对象
 b.不能直接获取某一个单独对象,只能一次性将全部的cookies拿到
 通过F12可以发现 除自己设置的Cookie对象外,还有一个name为JSESSIONID的cookie
建议:cookie中只保存英文和数字,使用中文以及特殊符号需要编码
 示例:使用Cookie实现 记住用户名的功能
- application(全局对象)
 String getContextPath() 获取当前项目的虚拟路径
 String getRealPath(String name):获取当前路径的绝对路径,加粗部分表示你要给他你当前的虚拟路径
- config 配置对象(服务器配置信息)
- page 当前页面对象
- exception 异常对象
                
 
 
                     
            
        













 
                    

 
                 
                    