jsp声明
<%@ page %> 表示 page指令 import页面要导入的包/资源
ISO-8859-1 对中文会有乱码 改成UTF-8
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
JSP的数据传递和保存
<form action="表单请求的地址/数据传递的地址/xxx.html/xxx.jsp" method="GET/POST">
</form>
JSP的Java脚本 -> Java文件中的_jspService(); 局部代码
JSP的Java表达式 -> Java文件中的_jspService(); out.print();
JSP的Java声明 -> Java文件中的成员信息
1. 掌握JSP内置对象的使用
HttpServletRequest request
HttpServletResponse response
PageContext pageContext;
HttpSession session = null;
ServletContext application;
ServletConfig config;
JspWriter out = null;
Object page = this;
exception
out.print();
out.write();
1.1 掌握request对象的使用
request对象可以作为数据的请求接收对象。
- 接收HTTP请求中的指定参数信息:String getParameter(String name);
- 接收HTTP请求中的指定参数信息(多值型):String[] getParameterValues(String name);
- 将请求中的所有参数信息全部存储为Map集合:Map<String,String[]> getParameterMap();
- 设置请求的编码:void setCharacterEncoding(String charsetName);
- 请求转发:getRequest请求Dispatcher调度员(String path).forward(request,response);
- 向request作用域[数据在一次请求内有效]存储数据:void setAttribute(String name,Object value);
- 从request作用域取数据:Object getAttribute(String name);
请求中文乱码(POST请求)
-
setCharacterEncoding(String env);
request.setCharacterEncoding("UTF-8");
-
将字符串先解码为字节数组 然后利用String的构造将其重新以UTF-8编码
String username = new String(name.getBytes("ISO-8859-1"),"UTF-8");
GET请求中文乱码已经在Tomcat 8.0时代解决了。
Change the default URIEncoding for all connectors from ISO-8859-1 to UTF-8. (markt)
但是8.0之前版本有问题,可以通过URIEncoding属性来解决。
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
1.2 掌握response对象的使用
response对象可以作为数据的响应对象。
- 重定向:response.sendRedirect(String path);
[面试题]GET和POST请求的区别
HEAD 、PUT、DELETE…
[面试题]请求转发和重定向的区别
它们都是页面跳转的方式。
**请求转发:**1次请求
它是服务器内部的资源跳转,它的地址栏就是这次请求的地址。
因为是1次请求,所以request作用域(在一次请求内 数据有效)就可以使用了。
请求转发只能跳转到服务器内部的资源地址。
**重定向:**2次请求
它是客户端发起两次请求,它的地址栏是第二次请求的地址。
因为是2次请求,所以request作用域无法使用。
重定向可以访问任意的资源地址。
1.3 掌握session对象的使用
request(请求)作用域:一次请求内有效
类比:你在打电话过程中 给对方说了一句话
session(会话)作用域:一次会话内有效
类比:你在打电话就是一次会话 包含着一系列的请求和响应
只要没有完全关闭
当前浏览器,在这个浏览器内
的所有请求和响应都是属于一次会话。
- 获取当前会话的id:String getId();
- 设置当前会话作用域的数据:void setAttribute(String name,Object obj);
- 获取当前会话作用域的数据:Object getAttribute(String name);
session作用域的应用场景:存储登录的用户信息 存储购物车等信息。
1.4 掌握session和cookie的区别
cookie 小饼干
可以存储某个站点内的一些设置信息,可以实现例如:自动登录 网站内的历史访问 记住用户名 …
**会话级cookie:**默认的cookie会随着session的结束而结束(浏览器自动将此缓存删除)。
**持久级cookie:**可以设置cookie的存活周期。(浏览器可以持久存储该信息)
session:
存储在服务器内
它可以存储任意类型的数据 setAttribute(String name,Object obj);
session它会随着会话的结束而销毁
session是安全的信息存储
cookie:
存储在本地客户端/浏览器
它只能存储String类型数据 new Cookie(String name,String value);
cookie默认是会话级的和session相同,但是可以设置持久级cookie
cookie不安全,因为存储在浏览器 谁都可以访问
session的原理:
当浏览器访问服务器时,服务器会对此浏览器生成一个唯一的会话编号,然后通过cookie响应存储到浏览器中。(默认的会话级别)
当浏览器重复服务器时,只要会话没关闭,意味着会话级别的cookie还存在,那么就每次都会在请求头传递一个JSESSIONID信息,服务器接收到此信息之后,会进行查找相应的数据存储空间。
1.5 掌握application对象的使用
记录本网站的浏览次数。
四大作用域:
page作用域:(不使用)本页面内有效。
request作用域:一次请求内数据有效。
session作用域:一次会话内数据有效。
application作用域:全局有效、整个项目周期内数据都有效。
每一个作用域对象都会有两个固定API:
void setAttribute(String name,Object obj);
Object getAttribute(String name);
[面试题]JSP九大内置对象
request
response
session
application
page
pageContext
out
config
exception
补充:
out是一个对象(JSP的内置对象 内置对象就是不用实例化new xxx,你直接用)
out.print() 或 out.println() 向页面输出内容
out.print() 或 out.println() 是一个java代码 ,不影响页面的换行 ,如果你想让页面内容换行 用<br/>
<%out.print("<h1>课工厂</h1>")%> 在页面中显示是 <h1>课工厂</h1>
// 双引号里面写单引号 不要双引号里面套双引号
jsp是运行在服务器端的 编译
JSP注释 3种
第一种: html的注释 在页面可以看到 jsp注释在页面上看不到 在浏览器右键查看源代码的时候<!---->
第二种: <%-- --%>
第三种:
<%
//单行注释
/*多行注释*/
%>
代码一:
在JSP中输出时间:
SimpleDateFormat记得导包 import java.text.SimpleDateFormat;
Date记得导包 import java.util.Date;
<% Date date=new Date();
SimpleDateFormat formater=new SimpleDateFormat("yyyy-MM-dd");
String time = formater.format(date);
%>
时间为<%=time %>
代码二://用 \表示转义 特殊字符就要加\
<%String name="黑色\"倔\"犟"; %>
<%=name %>
//输出黑色\"倔\"犟
代码三:
<%int i=9; %>
<%=i%> //JSP中的局部变量
<%! int j=9; %>
<%=j %> //JSP中的全局变量
观察全局变量和局部变量的区别
<%int i=9; %>
<%=i++%> //JSP中的局部变量
<%! int j=9; %>
<%=j++ %> //JSP中的全局变量
//每次进去页面 每刷新一次,就是一次请求 j变化 i不变化
web程序调试
web程序常见错误:
(1)404 --找不到访问的页面和资源
运行时 url输错
或将页面放在web-inf下
或外部启动tomcat,没有部署项目
(2)500错误 ----JSP页面代码有误
(3)页面无法显示—没有启动tomcat