1. 浏览器(客户端)可以直接访问 WebContent中的文件,但是不能直接访问WEB—INF中的文件。
    原因在于WEB—INF中的权限比较高,只能通过请求转发来访问。
  2. 跳转有两种方式(请求转发和重定向)。请求转发可以访问,重定向不能进行访问。
  3. 统一字符集编码:
    a.编码分类:
    设置jsp文件的编码(jsp文件中的pageEncoding属性): jsp->java
    设置浏览器读取jsp文件的编码(jsp文件中的content属性)
    一般上述设置成一样的(utf-8)。
    文本编码:
    i.将整个eclipse 中的文件统一设置。
    windows---->prerences—>jsp files—>encoding(改成UTF-8)。
    ii.设置某个项目统一编码。
    右击项目—>prerences—>resourse---->Text file encoding (改成UTF-8)。
    iii.设置单独文件的。
    右击文件—>propreties—>resourse—>other—>UTF-8

4 eclipse中的Tomcat和 文件中的Tomcat是独立的:在文件中修改Tomcat的端口号,用eclipse还要使用原来的端口号。

实际上eclipse将Tomcat复制了一份,放在名称为Server中了。

5 如何让eclipse和文件保持一致???

选中下方的Tomcat,双击。在Server Location中选择第二个托管模式。

第一次创建该实例之后,双击Tomcat,选择第二项,如果已经运行了,就不能进行修改了。

6 JSP的页面元素:HTML java代码 注释 指令。

脚本:Sceriptlet

<%

局部变量 java语句

%>

<%!
定义方法和全局变量
%>

<%=
相当于等于号
%>

7 一般而言,修改web.xml 配置文件 java 需要重新启动Tomcat服务器

但是如果修改JSP HTML css js 不需要重新启动Tomcat 服务器。

8 jsp 用out.println()和out.print()效果一样,都会有回车。

要想回车,必须加上+""

9 指令:page指令:

<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”

pageEncoding=“ISO-8859-1”%>

language :java 固定不变的,jsp页面使用的脚本语言。

import:导入的类。

pageEncoding:jsp文件自身的编码 jsp->java

contentType:l浏览器解析jsp的编码。

10 注释:

HTML注释:

java注释:// /* */

jsp注释:<%-- --%>

注意:HTML注释客户端可以通过浏览器查看源代码,看到。

11 JSP内置对象(自带的,不需要new 也能使用的对象)

9大内置对象:

out:输出对象

pageContext:

request:请求对象,存储“客户端向服务器发送的请求消息”
:String getParameter(String name):根据key ,返回value
: String[] getParameterValues(String name):根据key 返回多个值。
:void setCharacterEncoding(“编码格式utf-8”):设置请求编码。(Tomcat7以前默认是iso-8859-1 ,tomcat8以及以后默认utf-8)
:get RequestDispatcher("b.jsp").forward(request response):请求转发。
:getServerContext():获取该项目的ServerletContext对象。
实例:注册页面
用register.jsp 注册,用show.jsp 展示。

get与post提交方式:

get提交方式:method=“get”和地址栏 超链接 请求方式 默认都属于get提交方式。

例如:​​http://localhost:8080/Project/show.jsp?uname=123&upwd=123&uage=12&uhobbies=足球&uhobbies=篮球​​​​

post 与get 提交方式的区别?

i.get方式 在地址栏显示请求信息(但是地址栏能够容纳的信息量有限 4~5KB 如果请求数据量是大文件,会报错),post不会。

ii.文件上传必须用post。

response:
提供的方法:
void addCookie(Cookie cookie):服务器向客户端增加cookie对象。
void sendRedirect(String location ) throws IOException :页面跳转的另一种方式,重定向。
void setContextType(String type) :设置服务端响应编码(设置服务端的content属性)
实例登录功能:

请求转发与重定向的区别:

请求转发 重定向

地址栏是否改变 不变 改变

请求时的数据 保留 不保留

转发与重定向的实例:

转发:

张三(客户端) —> {窗口A(服务器)—>窗口B}

重定向:

张三(客户端)----->窗口A—>去找B---->回到客户端------>窗口B

session:

Cookie(客户端,不是内置对象):Cookie是由服务端产生的,发送给客户端保存。
本质:本地缓存:客户端(hello.mp4)---->服务端(hello.mp4):客户端向服务器发送请求访问服务器上的hello.mp4,
客户端先找到hello.mp4,将它封装到Cookie 中,发送给客户端。
作用:提高访问服务器的效率,但是安全性较差。
原因:如果账户密码存放在客户端,容易被盗取。
Cookie: key=value
javax.servlet.http.Cookie
public Cookie (String name,String value)
String getName();
String getValue();
void setMaxAge(int expiry);最大有效期(s)

服务器准备给客户端:
response.addCookie(Cookie cookie)
页面跳转(转发 重定向)
客户端获取Cookie:
request.getCookies();(必须获取全部的Cookie,然后再去遍历)。
通过F12可以发现除了自己设置的Cookie对象外,还有一个name为JSESSIONID的cookie对象。
Cookie 的经典案例:使用Cookie记住用户名 的功能。
:建议Cookie只保存英文和数字,否则需要编码和解码操作。

session:会话
浏览网站:开始浏览网站到关闭网站就是一次会话。
sessionID与JSESSIONID????
解释:客户端第一次访问服务器时,服务器的会创建一个session,session中自带一个sessionID
当服务器响应客户端的时候会创建一个JSESSIONID,并且将sessionID的值放在Cookie中,传递给客户端。
客户端中的JSESSIONID与服务器上的SESSIONID一一对应。
客户端第2/n次请求服务端的时候:服务器会先用客户端cookie中的JSESSIONID 去匹配服务器端的SESSIONID
如果匹配成功,说明此用户不是第一次访问,无需登录。session一般在用户登录的时候创建。

session的方法:
String getID():获取sessionID
boolean isNew():判断是否是新用户(第一次访问)
void invalidate():使session失效。
void setAttribute()
Object getAttribute()
void setMaxInactiveInterval(秒):设置最大有效,非活动时间。
int getMaxInactiveInterval():获取最大有效,非活动时间。

Session项目练习:如果登录不成功,返回login.jsp ,如果成功登录用Session记录用户的信息,
并且用welcome.jsp显示session中的用户信息。
cookie 与session的区别:
session cookie

保存的位置: 服务端 客户端

安全性 安全 不安全

保存的内容 Object String

config:配置对象
page:当前JSP页面对象(相当于java中的this)。
excepyion: 异常对象
application: 全局对象:
方法:String getContextPath() :获取虚拟路径
String getRealpath(“虚拟路径地址”):获取虚拟路径对应的绝对路径。

统一请求的编码:

get 如果出现乱码,解决:

1 . 统一每一个变量的编码:

name=new String (name.getBytes(“iso-8859-1”),“utf-8”);

2 . 修改server.xml文件,一次性的修改Tomcat get提交方式。

在server中找到端口号的地方:


加上URIEncoding="UTF-8"这句话。之后所有的get请求都是utf-8啦。

post方式??

在body开始加上:request.setCharacterEncoding(“utf-8”);这句话。

request 请求对象 同一次请求有效

session 会话对象 同一次会话有效

appliance 全局变量 全局有效(整个项目有效)

以上4个对象共有的方法:

Object getAttribute(String name) :根据属性名,或者属性值。

Void setAttribute(String name,Objext obj):设置属性值(新增 ,修改)。

setAttribute(“a”“b”);//如果a对象之前不存在,则新建一个a对象,如果已经存在,将a的值改成b

void removeAttribute(String name):根据属性名,删除对象 。

a.

pageContext :页面当前有效(页面跳转后无效)

b.

request 同一次请求有效,其他请求无效(请求转发后有效,重定向后无效)。

c.

session 同一次会话有效(无论怎么跳转,都有效,关闭或者切换浏览器后无效)

d:

application 全局变量,整个项目运行期间都有效。