jsp小知识点
jsp中的print和println都不会回车
用br元素才能回车
page指令,还有其他的
写在网页的开头
import导入的类
pageEncoding jsp自身编码
contentType 浏览器解析jsp的编码
有java注释、jsp注释、还有html注释
jsp的9内置对象(不需要new 也能使用的对象)
out 输出对象,向客户端输出内容
pageContent
request 请求对象;存储客户端向服务端发送的请求信息
1. String getParameter(String name)根据请求的字段值返回值
2. String[] getValues(String name) 返回多个字段值
3. void setCharacterEncoding(“编码格式utf-8“) 设置请求编码
4. getRequstDispatcher("b.jsp").forward(request,response) 请求准转发
5. servletContext getservletContext() 获取项目servletContext的对象
http://localhost:8080/myjsp/register/show.jsp?uname=sdf&upwd=23&uage=12&uhobbies=%E8%B6%B3%E7%90%83
提交方式:
- 默认的提交方式和地址栏提交方式都是get提交方式像上面的提交的方式
- 还有post方式
- get 和 post提交方式的区别:
get提交方式中在地址栏上显示提交的信息(但是地址栏能够容纳的内容有限,一般是4-5KB, 如果请求文件为视频等会容纳不下而报错) post 不显示
文件上传必须是post,get提交的方式不安全
统一请求的编码
get方式如果出现乱码,解决:
a. 一个一个解决 tomcat 7 是iso-8859-1 new String (name.getBytes("iso-8859-1"),"utf-8");
不推荐
b.修改server.xml,一次性的更改, 在改端口号的地方添加(区分大小写一般都是用这个方法修改)URIEncoding = “utf-8”
如果是post就不行了,post统一修改成 : request.setCharacterEncoding("utf-8"); 该条只对post有效
修改之前必须先知道转发的方式是get还是post
response和request的区别
response 内置对象 request 封装请求信息 response 封装的是响应的信息
提供的方法:
1.void addCookie(Cookie cookie) : 服务器向客户端增加cookie对象
2. void sendRedirect(String location) throws IOException 页面跳转的方式 重定向
实例; 登录
请求转发 | 重定向 | |
---|---|---|
地址栏是否改变 | 不变 | 改变 |
是否保留第一次请求是时的数据 | 保留 | 不保留 |
请求的次数 | 1次 | 两次 |
跳转发生的位置 | 服务端跳转 客户端发出的第二次跳转 |
session服务端 Cookie 客户端
cookie不是内置对象 又服务端产生,在发送给客户端保存 就是我们理解的本地缓存
Cookie作用 : 提高服务端的效率,但是安全性较差 cookie name = value
javax.servlet.http.Cookie
public Cookie(String name,String value}
string getName() 获取name
String getValue() 获取value
void setMaxAge(int wxpiry) 最大的有效期,时间限制
服务端准备cookie: response.addCookie(Cookie cookie) 页面跳转(转发或者重定向)
客户端获取cookie resquest.getCookie() 获取的cookie对象是,只能拿到全部的cookie不能获取单独的cookie
通过F12可以发现 除了自己设置的Cookie对象之外,还有一个name为JSESSIONID的cookie 其中的jsessionid和session密切相关
使用cookie实现 记住用户名和密码 建议cookie只保存英文和数字,否则有解码编码的问题
zs abc
session: 会话 从一次开始到一次关闭为一次会话
session机制:
sessionid 和jeseesionid一样,但是后面的在cookie里面 服务端和客户端通过session和cookie来一一对应
客户端第一次访问服务端时,服务端会产生一个session对象,用于保存用户的信息,并且每个session对象都会有一个唯一的sessionid 用于区分其他的id
服务端又会产生一个cookie对象,该cookie的name是jsessionid value 是jseesionid的值,至此客户端就有了一个cookie,因此客户端的cookie就可以和
服务端的session一一对应
客户端不是第一次请求的时候不需要session 客户端的cookie中的jsessionid和sessionid一一对应
session: session存储在服务端 session是在同一个用户请求时共享的 session的实现机制
session的方法:
String getId() 获取sessionid
boollean isNew() 判断是不是第一次访问
void invalidate() 使session失效 退出登录或者是注销
void setAttribute()
object getAttribute()
void setMaxInactiveInterval() 秒 设置最大有效的非活动时间
int getMaxInactiveInterval()
同一个浏览器的session都能拿到不管是开几个浏览器
实例: 实现注册登录功能
cookie | session | |
---|---|---|
保存的位置 | 本地 | 服务端 |
安全性 | 不安全 | 较安全 |
保存的内容 | String | Object |
设置解码的方式
request.setCharacterEncoding(“utf-8”)
config 配置对象 服务器配置信息
page 当前jsp页面对象(相当于java中的this)
exception 异常对象
session 回话对象
application 全局对象 获取当前项目的一切信息
String getContentPath()
String getRealPath(String name ) 绝对路径(虚拟路径 相对的绝对路径)
四种范围对象:
对象 | 有效期 |
---|---|
pageContent jsp页面容器 | 当前页面有效 |
request 请求对象 | 同一次请求有效 |
session 会话对象 | 同一次会话有效 |
application 全局对象 | 全局有效(整个项目有效) |
以上四个对象共有的方法:
方法 | 含义 |
---|---|
Object getAttribute(String name) | 根据属性名,或者属性值 |
void setAttribute(String name,object obj) | 设置属性值(新增或者是修改) |
setAttribute(“a”,“b”) | //如果a对象之前不存在,则新建一个a对象 如果a之前已经存在,则将a的值改为b |
void removeAttribute(String name) | 根据属性名,删除对象 |
四种范围对象的区别:
- pageContent jsp页面容器 (page对象) 当前页面有效 不能切换页面取值页面跳转后没有效果2
- . request 请求对象 同一次请求有效 重定向不是一次请求,请求转发可以多次也算是一次请求
- session 会话对象 同一次会话有效 重定向之后也也有效的话可以通过session,关闭或者切换浏览器之后无效
- application 全局对象 全局有效(整个项目有效) 整个项目运行期间都是有效的,其他的项目是无效的 关闭服务、其他项目 无效
—》 如果要多个项目共享,或者重启之后仍然有效,jndi - 以上的四个范围对象,通过set赋值,get取值
- 以上范围对象尽量用最小的,越大开销越大,小的不行的话才用大的来进行使用
来源:CSDN
作者:Timous
链接:https://blog.csdn.net/weixin_43911526/article/details/104145361