javaweb关于jsp的学习

为君一笑 提交于 2020-02-03 03:14:39

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

提交方式:

  1. 默认的提交方式和地址栏提交方式都是get提交方式像上面的提交的方式
  2. 还有post方式
  3. 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) 根据属性名,删除对象

四种范围对象的区别:

  1. pageContent jsp页面容器 (page对象) 当前页面有效 不能切换页面取值页面跳转后没有效果2
  2. . request 请求对象 同一次请求有效 重定向不是一次请求,请求转发可以多次也算是一次请求
  3. session 会话对象 同一次会话有效 重定向之后也也有效的话可以通过session,关闭或者切换浏览器之后无效
  4. application 全局对象 全局有效(整个项目有效) 整个项目运行期间都是有效的,其他的项目是无效的 关闭服务、其他项目 无效
    —》 如果要多个项目共享,或者重启之后仍然有效,jndi
  5. 以上的四个范围对象,通过set赋值,get取值
  6. 以上范围对象尽量用最小的,越大开销越大,小的不行的话才用大的来进行使用
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!