2020-10-30

Java Web复习Day1

JavaWeb

一、Servlet的作用:

一般用于控制器,内容比较简单,通常包含以下内容:
1)获得请求参数
2)根据请求参数调用业务方法
3)根据业务方法返回值,决定跳转到哪个页面
4)在跳转页面之前,可以携带数据

Servlet原理
当浏览器访问web容器中的对应资源时,对应的资源会根据Request、Response这两个参数,传递相应的信息,再跳转到Servlet中的service方法,根据我们自己编写的类,处理相应的请求,最终将信息返回。
Mapping
将这个理解成映射即可。在我们的web.xml配置文件中,servlet中的配置我们自己编写的处理类,servlet-mapping中配置我们的访问的时候的url路径。
ServletContext
ServletContext类想一个大容器,他可以用来存放每一个Servlet中的数据。我们只需要使用 .setAttribute(“xx”,xx) 就可以手动的将我们Servlet中的数据放置进那个大容器。
重定向和请求转发(重点)
重定向:
请求转发:.forward()
两者的区别:
1.重定向改变地址url,转发地址栏不变
2.重定向可以访问外部资源,转发只能访问内部
3.重定向是客户端跳转,转发为服务器跳转
4.重定向是两次请求,转发是一次请求
请求转发,当A请求C的资源,但是A无法直接访问到,但是B能访问到,所以我们就访问B,以此来达到A访问C的目的
重定向,当A需要访问某资源的时候,先去访问B,但是B没有对应的资源,不过B却告诉A应该访问A,于是就去A再去访问C,继而拿到了对应的资源

二、四种属性范围(作用域):

用于传递数据(有效范围)
	setAttribute(key, value); //存放数据
	getAttribute(key); //读取数据
	removeAttribute(key); //移除数据
	
page:只在当前JSP页面内有效(没啥用)
request:在一次请求内有效(最常用),请求结束时释放内存
	服务器端跳转可以获得,但客户端跳转不能获得
session:在一次会话内有效(尽量少用,会加重服务器的负载),会话失效时释放内存
	会话失效:关闭浏览器、会话超时、调用 session.invalidate()
application:在整个应用内有效(基本不用,只用于缓存),服务器关闭才释放内存	
JSP内置对象的4中属性范围

Page:只在一个页面中保存属性,跳转之后无效
Repuest:只在一次请求中保存属性,服务器跳转后依然有
Session:在一次会话范围中保存,无论何种跳转都可以用,但新开浏览器无法使用
Application:在整个服务器中保存,所有用户都可以使用。

注意:尽量使用范围比较小的作用域	
page < request < session < application

三、页面跳转方式

1)服务器端跳转:(主要的方法)
	特点:浏览器地址栏不发生改变,是同一个请求,可以使用request传递数据
	问题:刷新页面,可能导致表单重复提交
	
2)客户端跳转(重定向):(解决表单重复提交)
	特点:浏览器地址栏发生改变,是同一个请求,可以使用request传递数据
	问题:不能通过request传递数据,一般通过QueryString方式传递,即 ?id=xx&name=xx

四、Session会话:

通过客户端技术实现的一种服务器端技术,通常使用cookie实现,也可以使用url重写
cookie实现:每次请求会携带一个cookie:JSESSIONID
URL重写:每个URL后面都带上?JSESSIONID=xxxx
每个用户,在服务器端都有一个Session空间,所以尽量不使用session传递数据
一般使用session保存用户登陆信息,或者购物车对象

五、JSP的九个内置对象:

在JSP页面的<%%>中,内置对象,可以直接使用
out, request, response, pageContext, session, application, page, config
exception:只在<%@ page isErrorPage="true"%>时才存在 

9个内置对象:
pageContext request response session application config out page exception
几种重要对象的功能:
pageContext对象:表示一个JSP页面的下文。
request对象:接收客户端发送而来的请求信息。
Response对象: 对客户端的请求进行回应,将Web服务器处理后的结果发回给客户端。
Session对象:完成用户的登录、注销等。
Application对象:用来存储和获取可以被所有用户之间进行共享的信息
Config对象:取得,此初始化的配置信息。
Out对象:完成页面的输出操作,使用printin()或print()方法输出信息。

六、JSP的语法:

JSP本质上是一个模板文件,由html代码+Java代码片段
注意:以后尽量在JSP文件中不要使用Java代码,而应该使用JSTL标签库+EL表达式	
<% Java语句 %>	: 必须以分号结尾
<%= 表达式 %>	: 不能以分号结尾,等价于  <% out.print(表达示); %>
<%-- 注释 --%>
<%! 属性或方法的声明 %>
<%@ 指令 属性值1 属性值2 %>

七、JSP指令:

page: 	import, pageEncoding
include:  包含1个外部文件(可能不是JSP页面), 类似于 #include <xx>
taglib:	 引入标签库
注意:自定义标签文件中,还有一些指令

八、EL表达式的隐含对象:${pageScope}


<br/>---------------从指定的page域中查找数据------------------------<br/>
<!-- pageScope——代表page域中用于保存属性的Map对象 -->
<%
    pageContext.setAttribute("name","aaa");  //map
%>
${pageScope.name }

<br/>---------------从request域中获取数据------------------------<br/>
<!-- requestScope——代表request域中用于保存属性的Map对象 -->
   <%
       request.setAttribute("name","bbb");  //map
   %>
   ${requestScope.name }

   <br/>---------------从session域中获取数据------------------------<br/>
   <!-- sessionScope——代表session域中用于保存属性的Map对象 -->
   ${sessionScope.user }

   <!--applicationScope——代表application域中用于保存属性的Map对象  -->

   <br/>--------------获得用于保存请求参数map,并从map中获取数据------------------------<br/>
   <!-- param——表示一个保存了所有请求参数的Map对象 -->
   <!-- http://localhost:8080/day12/3.jsp?name=aaa  -->
   ${param.name }
       <!-- 此表达式会经常用在数据回显上 -->
       <!-- 模拟的应用场景是表单提交到后台校验没有通过,回到注册页面时的数据回显 -->
   <form action="${pageContext.request.contextPath }/servlet/RegisterServlet" method="post">
       <input type="text" name="username" value="${param.username }">
       <input type="submit" value="注册">
   </form>

       <br/>--------------paramValues获得请求参数 //map{"",String[]}------------------------<br/>
       <!-- paramValues——表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[] -->
   <!-- http://localhost:8080/day12/3.jsp?like=aaa&like=bbb -->
   ${paramValues.like[0] }
   ${paramValues.like[1] }

       <br/>--------------header获得请求头------------------------<br/>
       <!-- header——表示一个保存了所有http请求头字段的Map对象 -->
   ${header.Accept }
   ${header["Accept-Encoding"] }<!-- 通过.运算符解决不了,用[] -->

   <br/>--------------获取客户机提交的cookie------------------------<br/>
   <!-- cookie——表示一个保存了所有cookie的Map对象 -->
   <!-- 从cookie隐式对象中根据名称获取到的是cookie对象,要想获取值,还需要.value -->
   ${cookie.JSESSIONID.value }

   <br/>--------------获取web应用初始化参数------------------------<br/>
   <!-- initParam——表示一个保存了所有web应用初始化参数的map对象 -->
   ${initParam.xxx }  //servletContext中用于保存初始化参数的map
   ${initParam.root }

九、标签库

JSP 标准标签库(JSTL)
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

根据JSTL标签所提供的功能,可以将其分为5个类别。

核心标签
格式化标签
SQL 标签
XML 标签
JSTL 函数
JSTL 库安装

十、JavaScript

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_51135467/article/details/109393393