JSP页面元素:HTML、java代码(就是指脚本Scriptlet)、指令、注释

a.脚本Scriptlet

  1. <%
    声明局部变量,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也可以使用的对象)

  1. out:输出对象,向客户端输出内容
  2. pageContext JSP页面容器
  3. 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%83java获取网页的元素_客户端
  4. 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实现 记住用户名的功能

  1. application(全局对象)
    String getContextPath() 获取当前项目的虚拟路径
    String getRealPath(String name):获取当前路径的绝对路径,加粗部分表示你要给他你当前的虚拟路径
  2. config 配置对象(服务器配置信息)
  3. page 当前页面对象
  4. exception 异常对象