jsp笔记

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);
}
原文地址:https://www.cnblogs.com/yuing/p/8603032.html