JSP总结(request和response写的很略)

jsp就是java和html结合在一起,再html文件中插入java代码和jsp标记。
这里引入了一个新的概念:碎片化代码。即在html代码中嵌套java代码。

关于jsp的运行机制: 可以把Tomcat看作一个jsp容器,客户端向Tomcat请求jsp页面,在服务器内部(Tomcat).jsp先是翻译为.java,然后经过编译变成.class,然后执行java实例返回响应给客户端(展示在页面上)。

jsp的组成

jsp书写

  • <%@ %>可以直接在里面定义变量和方法,后续直接调用。
  • <%@include %>:如果想每个界面都用到一些声明,可以把这些声明写出单独文件,用<%@include %>或者<jsp:include >包含进来。
  • <%! %>放置java的变量或者方法声明语句,所声明的变量在整个jsp页面中有效。
  • <%= %>内容以字符串的形式发送到客户端显示(在界面中显示),这个功效和<% out.print(); %>等同。
  • <% %>:在html代码中嵌套的java代码就是在这里面写。

JSP操作指令

jsp的操作元素有:< jsp:param>,< jsp:forward>,< jsp:include>

实现页面跳转的方式有四种

  1. forward
  2. 重定向 response.sendRedirect
  3. form表单提交 action后面接要跳转的地址
  4. <a>链接

form跳转和超链接跳转都是改变地址栏了,只有forward不改变地址栏 ( 测试了一下,应该是这样的)


跳转分类

服务器端跳转: 又称为内部跳转,当客户端向服务器发送一个请求,请求当前资源时,这个资源在服务器内部跳转到另一个资源,再向客户端发送一个响应(即客户端只产生了一次请求)。

客户端跳转: 又称为外部跳转,当客户端向服务器发送一个请求,请求当前资源时,这个资源向客户端发送一个去请求其他地址的回应。客户端再根据这个地址去进行下一次请求(即客户端产生了两次请求)。

forward:浏览器显示的网页重定位到另一个html文件或者jsp文件。

forward语句时无条件跳转,使用该跳转语句,虽然页面内容已经跳转了,但是地址栏没有任何变化,意味着:用户的请求依旧没有改变,所以属于服务器跳转

<jsp:forward page="表达式,跳转的目的页面">
	<jsp:param name="..." value="..."> 
	这个必须有,没有的话会500报错,还有一个要注意在forward标签内千万不要写注释,也是500报错
</jsp:forward>

或者

<jsp:forward page="表达式,跳转的目的页面"/>

怎么提交呢?
在form表单想有一个action属性,提交表单时,表单数据会被提交到action属性值的页面。

<form name="input"
action="receive.jsp" method="post">
用户名: 
<input type="text" name="user" />
<input type="submit" value="点这里提交" />
</form>

jsp的各种内置对象

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

out对象

out.print():输出。
out.println():换行输出。
out.flush():实现向客户端输出缓存区数据。
out.close():用来关闭输出流。
不过out.println():的换行经常被浏览器解析忽略,所以还是得用out.println(“< br/>)来实现。

request

客户端请求一个JSP网页时,请求信息(参数)会分装在request对象中,可以对request对象调用相应的方法获得需要的参数。
服务器跳转的特点:request的请求数据可以传递,比如a->b,b->c,那么a->b->c。

用get方式提交表单,Tomcat8.0后不需要处理乱码,post需要进行乱码处理。(action)

常用的

	request.getParameter("value值");

在这里插入图片描述

response对象

在这里插入图片描述
setHeader(“refresh”,“时间/s”);可以实现间隔固定时间刷新界面。
(这种刷新方式会显示刷新)

foward跳转和response.sendRedirect重定向的区别

跳转语句后面的代码还执不执行重点看
在这里插入图片描述

Session对象

session是一个会话变量,当浏览器第一次访问服务器时,服务器创建一个session对象(该对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId
以cookie的方式发送给浏览器,在同一个浏览器窗口中,无论向服务器发送多少请求,session对象只有一个(比如防止一个问卷被同一个用户多次填写)。当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据sessionId就可以找到对应的session对象。
是服务器为了保存用户状态而创建的一个特殊的对象。
(再说一下,session是指在同一个浏览器,同一个网站(同一个javaweb项目)的一次访问(没有关闭浏览器)中是一致的,比如我用谷歌浏览器访问京东网站写的所有页面是同一个session。session只有在这个浏览器属于这个网站的所有页面都关闭了才会销毁)

但是如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器,但是我们可以通过编写程序进行修改这个session的生命周期的时间。
session.setMaxInactiveInterval(10000);用来设置session的有效期为10000秒,超出这个范围将失效。

也可以通过session对象存储或者读取客户的相关信息,例如用户名或购物信息等,可以通过session对象的setAttribute(String name,Object obj)方法(设置属性信息)和getAttribute(String name)的方法(获取属性信息)实现,即使是在不同界面。

注意的是getAttribute()方法的返回值是Object类型,如果将获取到的信息赋给String类型的变量,则需要进行强制类型转换或者调用其的toString()方法。

session对象中保存和检索的信息不能是基本数据类型,得是Object对象。
在这里插入图片描述

application对象

和session相似,application它类似于系统的全局变量,用于保存所有程序中的公有数据。它在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁的时候,所有用户都可以享用该application对象。它的生命周期可以说是最长的。但是其应用程序初始化的参数是要在web.xml文件中进行设置的,通过<context-param>标记配置应用程序初始化参数。也就是说同时再打开另一个浏览器,他们使用的都是同一个application对象。(不同浏览器是同一个application对象)
(总的说一下,就是你访问一个网站是要向它所属的服务器请求的(比如Tomcat),你只要访问,Tomcat就打开了。不管是哪一个浏览器,只要访问的是同一个网站,服务器(Tomcat)没关就是同一个application,比如我用火狐和谷歌访问京东网站时同一个application)

session和application的区别

session的范围是同一个浏览器同一个网站(javaweb项目)
application的范围是任意浏览器同一个网站同一次对服务器的申请访问,服务器没关application就不会销毁。

作用范围:request < session < application

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值