jsp语法
<% %>java 代码块
<%= %>java表达式
<! >类声明
jsp的初始化需要在类声明中重写jspInit方法
public void jspInit(){
// 初始化代码
}
jsp导入页面
- jsp静态导入页面
<%@include file="1.jsp"%> <!--导入页面-->
<jsp:include page="1.jsp"></jsp:include> <!--通过jsp命令 导入页面 -->
- jsp动态的导入页面
被加载的页面通过 request.getParameter(""); 获取参数
<jsp:param name="" value=""> <!-- 传递参数 -->
<jsp:include page="1.jsp">
<jsp:param name="name" value="张三">
</jsp:include>
请求转发与重定向
- 页面转发 服务端跳转服务器页面跳转
特点
- 地址栏不会变
- 请求参数不会丢
- 浏览器发出一次请求,得到一次响应
request.getRequestDispatcher("1.jsp").forward(request,response);*
2. <jsp:forward page="1.jsp"> <!--可以很方便的传递参数 但是有中文时会乱码 需要设置request.setCharacterEncoding("UTF-8");-->
<jsp:param name="name" value="张三"> <!--传递参数-->
</jsp:forward>
- 重定向 客户端跳转(服务器状态码:302)
特点
- 地址栏会变
- 请求参数丢失
- 浏览器发出二次请求,得到二次响应
<%response.sendRedirect("2.jsp");%>
无论是RequestDispatcher.forward 方法,还是HttpServletResponse.sendRedirect方法,在调用它们之前,都不能有出到了客户端。如果缓冲区中已经有了一些内容,这些内容已经被实际输内容将被从缓冲区中清除。
jsp的四大作用域
- pageContext 作用域当前页
- request 作用域一次请求中
- session(会话) 作用域再一次会话中
- application 作用域应用程序中
方法:
- setAttribute 添加数据("key","vakye")
- getAttribute 获取数据("key")
- removeAttribute 删除数据("key")
jsp中的9个内置类
1. repuest -请求 -javax.servlet.http.HttpServletRequest
解决中文乱码的方式
post
post request.setCharacterEncoding("UTF-8");
setCharacterEncoding("UTF-8");
get
URLEncoder.encode("str","编码格式");//对字符串编码
URLDecoder.decode("str","解码格式");//对字符串解码
jsp静态资源访问
request.getContextPath(); //返回项目web的根目录 /web
传递参数
request.setAttribute("String",Object);
2. response
-响应
-javax.servlet.http.HttpServletResponse
3. session
-会话
-javax.servlet.http.HttpSession
4. out -输出信息 - javax.servlet.jsp.JspWriter
5. pageContest -当前页面 -javax.servlet.jsp.PageContext
6. application -应用程序 -javax.servlet.ServletContext
7. config -配置 -javax.servlet.ServletConfig
8. exception -异常
9. page -相当于this
jsp:Cookie
- Cookie 不支持中文 所以在存储中文的信息时 需要进行编码
- 一个cookie只能以key(String)-value(String)的形式 存储一条信息
- 创建一个新的cookie:
Cookie cookie = new Cookie("username",
- 设置cookie的生命周期:
cookie1.setMaxAge(int i);
i = 0 : 代表立即删除
i > 0 : 代表存在i秒的时间
i < 0 : 代表会话结束后结束(默认)
- 添加cookie:response.addCookie(cookie2);
- 获取cookie:Cookie[] cookies = request.getCookies();]]
//获取请求头信息
Enumeration<String> handerNames = request.getHeaderNames();
while(handerNames.hasMoreElements()){
String name = handerNames.nextElement();
String value = request.getHeader(name);
}