编码处理
get请求编码: tomcat8以上已经处理,不需要管
post请求编码, 调用request.setCharacterEncoding("UTF-8");
响应编码设置: response.setContentType("text/html;charset=UTF-8");
2,3编码处理的代码在获取参数之前, 响应数据之前, 2,3 作为servlet前两行代码
登录实现: 错误信息, 保存request域, 转发到login.html
html无法访问域对象, 域对象是java对象, 如果想访问域对象, java的代码, JavaEE 提供了jsp
jsp
包含HTML与java脚本, 作为展示, jsp也是一个动态资源, 浏览器无法直接访问, 浏览器请求jsp, 需要web服务器,执行jsp的代码, 执行之后的结果转换静态的html,响应给浏览器
jsp的java脚本写法:
<% %>: java方法能写的代码,都可以写在它内部
<%= %> : 表达式, 表达式的结果在页面展示
<%! %> : 定义属性,定义方法
jsp九大内置对象-- 面试题
内置对象: 不需要创建,可以直接使用
四大域对象: pageContext, request,session,application
响应对象: response
响应流对象: out
配置对象: config
表示this: page
异常对象: exception
html 转换为jsp
1.创建一个jsp页面, 文件名与对应html文件名一样
2.把html页面的所有内容拷贝到jsp, 从<%@ page%> 之后
3.把相对路径转换为绝对路径, 项目设置发布项目名: / 绝对路径: 全部以 /开头
如果设置发布项目名: /xx 绝对路径: /xx开头, /xx动态获取: <%=request.getContextPath()%>
记住我
当用户登录页面, 勾选记住密码, 登录, 登录成功之后, 下一次再登录, 显示上一次登录的用户名和密码
用户名,密码存储位置:
域对象: application域, 所有的用户都可以访问, 不安全, 不考虑
数据库: 存储很多用户的信息, 无法区分
JavaWeb中: 提供Cookie(小甜点), 特征: 产生与服务器, 保存在客户端浏览器上
key/value的形式; key; string, value: String
标准: 4kb, 浏览器厂家扩展, cookie不能跨浏览器
java操作cookie:
服务器这边: 创建cookie: 构造方法 Cookie(String name,String value)
保存到客户端的方法: response对象的方法: addCookie(Cookie)
如果没有addCookie(), 那这个cookie不会保存到客户端
服务器获取cookie:
cookie是通过请求头传递到服务器:
request对象的Cookie[] getCookies()
Cookie的细节
-
Cookie的max-age
max-age: cookie最大存活时间 Cookie的setMaxAge(int )
默认值: -1 在会话中存活, 打开浏览器到关闭浏览器,称为一次会话
> 0
Cookie存活数值(秒)时间, 时间一旦, 浏览器把cookie删除0: 立即删除Cookie
-
Cookie的path
设置Cookie的path, 限制那些资源允许访问
资源的上级目录下的cookie可以访问
资源的上上级目录的cookie可以访问
...
/目录下Cookie可以访问.
Cookie的path设置为/ ,表示该cookie可以被这个项目的所有的资源访问
-
修改Cookie的value
调用Cookie的setValue()
隐形修改:
Cookie c2 = new Cookie("name","wangwu")
如果客户端浏览器存在该key的cookie,并且path一样, 修改cookie的值
如果客户端浏览器不存在该key的cookie, 添加
如果客户端浏览器存在该key的cookie,但是path不一样, 添加