JSP学习笔记

JSP

0 前言

这是我的一个jsp学习笔记,用于复习和总结,记录总结有误的请多多指教,万分感谢.
日更
最后一次更新时间:20/12/2

1统一字符集编码


** a.设置jsp文件的编码**

因为jsp会被翻译成Java文件, 所以需要编码 (jsp----->Java)通过jsp文件中的 page pageEncoing属性来设置 ;

pageEncoding="UTF-8

Tomcat8.5以上默认的编码是 UTF-8


b.设置浏览器读取jsp文件的编码

浏览器读取jsp文件需要程序员手动为他选着一个编码规范来读取

<meta charset="UTF-8" content="text/html; charset=UTF-8">

c.文本编码:

统一设置

在这里插入图片描述

1-2 乱码

产生乱码的原因:

1)编码方案不同**

2)读取方式不同

3)一定要区分get和post两种提交方式


1-2-1 get与post区分

get:信息可见,容量有限4-5KB

method="get"//地址栏,超链接都默认属于get提交方式

post:信息隐藏 , 文件上传必须用post

method="post

1-3 统一请求的编码

必须先区分get和post


1-3-1 get请求:

a.单个变量乱码 : new String(“旧编码”,“新编码”);

name = new String(name.getBytes("iso-8859-1"),"utf-8");//强转码

b.修改Tomcat默认的get提交方式的编码方案: sever.xml 第65行代码 添加 URIEnding=“UTF-8”

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8888" protocol="HTTP/1.1" redirectPort="8443" URIEnding="UTF-8"/>

1-3-2 post请求:

代码块上面添加一行代码

request.setCharacterEncoding("utf-8");

2JSP页面元素

a.脚本

<%
	局部变量,Java语句
%>
<%!
	全局变量,或者定义方法
%>
<%=输出%>		//可以直接解析代码

代码演示

	<%!
			public String Name;//全局变量
			public void test(String name){
				Name=name;
			}
		%>
		<%
			String name = "刘佳奇";
			out.print(name);
			test("雨洁(~.~)");
		%>
		<%=Name %>

一般而言修改Jsp/heml/js,不需要重启

println(),不能回车,需要加标签


b.指令

JSP指令用来设置整个JSP页面相关的属性

指令描述
<%@ page … %>定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ include … %>包含其他文件
<%@ taglib … %>引入标签库的定义

c.注释

<!-- html注释,可被看到 -->
//Java单行注释
/*java多行注释*/
<%-- jsp注释 --%>

2-2Page指令

Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。

Page指令的语法格式:

<%@ page attribute="value" %>

等价的XML格式:

<jsp:directive.page attribute="value" />

属性

下表列出与Page指令相关的属性:

属性描述
buffer指定out对象使用缓冲区的大小
autoFlush控制out对象的 缓存区
contentType指定当前JSP页面的MIME类型和字符编码
errorPage指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage指定当前页面是否可以作为另一个JSP页面的错误处理页面
extends指定servlet从哪一个类继承
import导入要使用的Java类
info定义JSP页面的描述信息
isThreadSafe指定对JSP页面的访问是否为线程安全
language定义JSP页面所用的脚本语言,默认是Java
session指定JSP页面是否使用session
isELIgnored指定是否执行EL表达式
isScriptingEnabled确定脚本元素能否被使用

2-3 Include指令

JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。

Include指令的语法格式如下:

<%@ include file="文件相对 url 地址" %>

include 指令中的文件名实际上是一个相对的 URL 地址。

如果您没有给文件关联一个路径,JSP编译器默认在当前路径下寻找。

等价的XML语法:

<jsp:directive.include file="文件相对 url 地址" />

2-4Taglib指令

JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。

Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。

Taglib指令的语法:

<%@ taglib uri="uri" prefix="prefixOfTag" %>

uri属性确定标签库的位置,prefix属性指定标签库的前缀。

等价的XML语法:

<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />

3 九大内置对象

不需要new可直接使用


3-1 request请求对象

request, 储存客服端向服务端发出的请求信息

​ request 对象是 javax.servlet.httpServletRequest 类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。


3-1-1 Request常用的方法:

1.00 getParameter(String strTagtName) 获取表单提交的信息。

String strName=request.getParameter("name");

1.01 getParameteerValues(String strTagName), 获取表单提交的多个值,(返回checkbox的value)

String[] hobbies= request.getParameterValues("uhobbies");

1.02 request.setCharacterEncoding(“utf-8”); 设置post里数据的请求编码

request.setCharacterEncoding("utf-8");

以上必记

1.03 getProtocol() 获取客户使用的协议。

String strProtocol=request.getProtocol();

1.04 getServletPath() 获取客户提交信息的页面。

String strServlet=request.getServletPath();

1.05 getMethod() 获取客户提交信息的方式,get|post。

String strMethod = request.getMethod();

1.06 getHeade() 获取HTTP头文件中的accept、accept-encoding和Host的值。

String strHeader = request.getHeader("accept");

1.76 getRermoteAddr() 获取客户的IP地址。

String strIP = request.getRemoteAddr();

1.08 getRemoteHost() 获取客户机的名称。

String clientName = request.getRemoteHost();

1.09 getServerName() 获取服务器名称。

String serverName = request.getServerName();

1.10 getServerPort() 获取服务器的端口号。

int serverPort = request.getServerPort();

1.11 getParameterNames() 获取客户端提交的所有参数的名字。

Enumeration enum = request.getParameterNames();while(enum.hasMoreElements()){  String s=(String)enum.nextElement();  out.println(s);}

1.12 getHeaderNames() 取出全部头信息。

  <%
  Enumeration enu = request.getHeaderNames();//取出全部头信息
  while(enu.hasMoreElements()){
  String name = (String)enu.nextElement();
  String value = request.getHeader(name);
  %>
  <h1><%=name %>--<%=value %></h1>
  <%    
  }
  %>

3-2 response响应对象

response储存服务器对客户端的响应信息以及处理http的连接信息

例如设置http文件头,设置cookie对象等。

response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。


3-2-1 response常用方法:

2.01 void addCookie(Cookie cookie); 服务器向客户端增加cookie对象

response.addCookie(userCookie);//此方法要和Cookie对象配合使用

2.02 void sendRedirect(String location) throws IOException; 页面跳转的一种方法(送到更改的地址-send:送–Redirect:使改寄)

response.sendRedirect("name.jsp");

2.03 setCharacterEncoding(“编码”)

request.setCharacterEncoding("UTF-8");

以上特重要必记


3-2-2 转发重定向

转发
request.getRequestDispatcher("跳转页面 ").dorward(requst.reponse);

request.getRequestDispatcher("succes.jsp").forward(request,response);
特点:
  1. 可以跳转页面,但是浏览器的地址栏不变,服务体帮你显示跳转页面的结果
  1. 保留第一次请求时的数据
  1. 浏览器只做了一次请求,服务器找到那个页面,然后响应给你\
  1. 服务器内部跳转

重定向
response…sendRedirect(“重定向页面”);

response.sendRedirect("succes.jsp");
特点:
可以跳转页面,但是浏览器的地址变了,所以两次请求,两次响应,故请求时的是数据不保留
浏览器请求跳转:
第一次请求–>浏览器向服务器请求跳转,
第一次响应–>服务器同意,且通过response发给浏览器跳转的地址
第二次浏览器请求跳转服务器给出的地址
第二次响应:服务器给出响应

3-3 Session 会话对象

案例:
a.浏览网页:开始–>关闭就是一次会话
b.购物: 浏览–>付款–>退出就是一次对话
c. 电子邮件: 浏览–>写信–>发送–>退出就是一次对话
**总结:**一次会话就是从开始到结束.

3-3-1 Cookie

Cookie(服务器端,不是内置对象) : Cookie 是由服务器产生的 , 再发给客户端保存. 相当于本地缓存的作用 : 提高服务器访问效率,但是安全较差 . 有时间限制
Cookie.servlet.http.Cookie 产生的


public Cookie(String name, String value)
Cookie name = value

必记方法:
String getName(); 获得name
String getValue(); 获得value
void setMaxAge()int expiry); 最大有效时间

服务器

  1. 服务器创建Cookie对象
Cookie cookie = new Cookie("name","value");
  1. 服务器添加Cookie:
response.addCookie(Cookie cookie);
  1. 设置Cookie存在时间
cookie.setMaxAget(10);//10秒
  1. 服务器传给客户端Cookie:
    通过页面跳转 (转发或者重定向)
response.sendRedirect("name.jsp");

客户端

  1. 客户端获取本地所有Cookie对象的一个数组:
Cookie[] users = request.getCookies();
  1. 通过for循环找到需要的Cookie对象
for (Cookie key : users) {
			if (key.getName().equals("name")) {
				cname = key.getValue();
			}
		}
  1. 使用Cookie
key.getname();
key.getValue();
特别注意:
a.服务器增加cookie :通过response; 客户端获取对象: request 对象;
b. 目前没有提供获取某一个对象,只能一次性全部拿
c. 会自动生成一个
name:JSESSIONID
value:F62FFAD5C742DA5BCA30BE1EE8DCCE8C
的cookie;
d. Cookie是由服务端产生,最终保存在客户端的

总结:

  1. cookie就是客户端发个服务端数据,再由服务端创建,然后服务端发给客户端到本地保存的,最后由服务端访问本地文件来获取的一个对象
  2. 浏览器f12–>网络–>发现多了一个name为JSESSIONID的cookie.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值