本文主要是介绍JSP简述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
JSP
JSP的本质是一个Servlet,JSP主要负责与用户进行交互,将最终的界面呈现给用户,HTML+JS+CSS+JAVA的混合文件
当服务器接收到一个后缀是JSP的请求时,将该请求交给JSP引擎去处理,每一个JSP页面第一次被访问时,JSP引擎会将他翻译成Servlet文件,由Web容器调用servlet完成响应。
从开发的角度看,JSP就是在HTML中嵌入Java程序
嵌入方式
1.JSP脚本:执行逻辑代码
<%JAVA代码%>
其中的Java代码在控制台输出
2.JSP声明:定义Java方法
<%!声明Java方法%>
3.JSP表达式:把Java对象直接输出到HTML页面
<%=JAVA遍历%>
JSP内置对象
JSP提供的可以直接使用的对象 一共有九个
1.request 2.response 3.pageContext 4.session 5. application 6.config 7.out 8.page 9.exerption
1.request 表示一次请求,由httpservletRequest
2.response 表示一次响应,由httpservletResponse
3.pageContext 页面上下文,获取页面信息 由pageContext
4.session 表示一次会话 ,用来保存用户信息 HttpSession
5.application 表示当前的web应用,全局对象,保存所有用户信息ServletContext
6.config 表示当前JSP对应Servlert 的servletconfig 对象,获取servlet 信息
7.out 向浏览器输出数据 JSPWriter
8.page 当前 JSP 对应的 servlet 对象 servlet
9.exerption 表示jsp 页面发生的异常 Exception
常用的 request response session application pagecontest
request 常用方法:
1、String getParameter(String key) 获取客户端传来额的参数
2、void setAttribute(String key object value) 通过键值对的形式保存数据
3.object getAttribute(String key) 通过key值取出value
4.getrequestDispatcher(String path) 返回一个requestdispatcher对象,该对象的forword方法用于转发请求
5.String[] getparametervalues() 获取客户端传来的多个同名参数
6.void setcharaterEncoding(String charset) 指定每个请求的编码
http码: 200 正常但不显示
404 资源找不到
400 请求类型不匹配
500 Java程序抛出异常
response常用方法:
-
1.sendredirect(string path) 重定向,页面之间的跳转
转发(getrequestdispispatcher)与重定向(sendredirect):
转发是将同一个请求传给下个页面
重定向是将一个新请求传给下个对象,之前的请求结束
转发:同一个请求在服务器之间传递,地址栏不变,也叫服务器跳转
重定向:由客户端发送一次新的请求来访问跳转之后的目标资源,地址栏改变,客户端请求.
如果两个页面之间需要request来传值,则必须使用转发,不能使用重定向
-
2.setContentType(String type): 设置响应的内容类型,例如
text/html
或application/json
。 -
2.getWriter(): 获取一个
PrintWriter
对象,用于向客户端发送文本数据。 -
3.setStatus(int status): 设置HTTP响应的状态码,例如
200 OK
或404 Not Found
。 -
4.addCookie(Cookie cookie): 向响应中添加一个cookie。
-
5.setHeader(String name, String value): 设置指定响应头的值。
-
6.sendError(int sc): 发送一个错误响应到客户端。
session常用方法:
用户会话 服务器无法识别每一个HTTP请求的出处(不知道来自哪个终端),他只会接受到一个请求信号,所以就存在将用户的想用请求发给其他人,必须有一种技术来让服务器知道请求来自呢,
会话:就是客户端与服务器之间发生的一系列连续的请求和响应的过程.
会话状态:指服务器和浏览器在会话过程中产生的状态信息,借助于会话状态,服务器能够把属于同一次会话的一系列请求和响应关联起来
实现会话的两种方式:
session: 储存客户信息,服务端
cookie: 存储用户信息,客户端
属于同意会话的请求都有一个相同的标识符,sessionID
String getid() 获取当前会话的ID
void setmaxInactiveinterval(int interval) 设置session的失效时间,单位为秒
int getmaxInactiveinterval() 获取当前session失效时间
void invalidate() 设置session立即失效 一般在退出登录是使用
void setattribute(string key object value) 通过键值对的形式储存数据
object getattribute(string key) 通过键值获取对应的数据
void removeattribute(string key) 删除
cookie
实现会话的一种机制,
Cookie 是服务端在 HTTP 响应中附带传给浏览器的一个小文本文件,一旦浏览器保存了某个 Cookie,在之后的请求和响应的过程中,会将其 Cookie 来回传递,这样就可以通过 Cookie 这个载体完成客户端和服务端的数据交互。
创建cookie
Cookie cookie = new Cookie("name", "tom");response.addCookie(cookie);
-
void setMaxAge(int age) 设置 Cookie 的有效时间,单位为秒
-
int getMaxAge() 获取 Cookie 的有效时间
-
String getName() 获取 Cookie 的 name
-
String getValue() 获取 Cookie 的值
Cookie常用的方法
-
void setMaxAge(int age) 设置 Cookie 的有效时间,单位为秒
-
int getMaxAge() 获取 Cookie 的有效时间
-
String getName() 获取 Cookie 的 name
-
String getValue() 获取 Cookie 的值
Session和Cookie的区别
-
session:保存在服务器
-
保存的数据是 Object
-
会随着会话的结束而销毁
-
保存重要信息
-
-
cookie:保存在浏览器
-
保存的数据是 String
-
可以长期保存在浏览器中,无会话无关
-
存储用户信息:
session: setAttribute("name","admin") 存 getAttribute("name") 取 生命周期:服务器端:只要WEB应用重启就销毁,客户端:只要浏览器关闭就销毁。 退出:sessioninvalidate
cookie: response.addCookie(new Cookie(name,"admin"))
代码部分:
Cookie[] cookies = request.getCookies();for (Cookie cookie:cookies){if(cookie.getName().equals("name")){out.write("欢迎回来+"+cookie.getValue());}}
退出:setmaxage(0) 生命周期:不随服务器端的重启而销毁,客户端:默认是只要浏览器关闭浏览器就销毁,我们通过setMaxAge()方法设置有效期,一旦设置了有效期,则不随浏览器的关闭而销毁,而是由设置的时间来决定
JSP内置对象的作用域
-
4个
-
page, request, session, application
-
setAttribute, getAttribute
-
-
page 作用域:对应的内置对象是 pageContext。
-
request 作用域:对应的内置对象是 request。
-
session 作用域:对应的内置对象是 session。
-
application 作用域:对应的内置对象是 application。
-
page < request < session < application
page只在当前页面有效
request在同一请求中有效
根据你提供的图片内容,这里是提取的文字:
-
顶部文字:
-
"session 在一次会话内有效。"
-
"application 对应整个WEB应用的。"
-
"● 网站访问量统计"
-
-
代码内容:
Integer count = (Integer) application.getAttribute("count");if(count == null){count = 1;application.setAttribute("count", count);} else{count++;application.setAttribute("count", count);}
EL表达式
expression language 表达式语言,替代JSP页面中数据访问时的复杂编码,可以非常便捷的取出域对象中保存的数据,前提是一定要先把setattribute,EL就相当于简化的getattribute
表达式
$变量名就是setattribute 对应的key值
-
EL对于4种域对象的默认查找顺序: pageContext.request.session.application 按照上述的顺序进行查找,找到立即返回,在application 中也无法找到,则返回 null
-
指定作用域进行查找 pageContext: $(pageScope.name) request: $(requestScope.name) session: $(sessionScope.name) application: $(applicationScope.name)
以及EL表达式操作符的说明:
&& and|| or! not== eq!= ne< lt> gt<= le>= genull empty变量为null,长度为0的string size 为零的的集合
JSTL
JSP Standard Tag Library JSP 标准标签库,JSP 为开发者提供的一系列标签,使用这些标签可以完成一些逻辑处理,比如循环遍历集合,让代码更加简洁,不再出现 JSP 脚本穿插的情况。
实际开发过程中 EL 和 JSTL 结合起来使用,JSTL负责逻辑处理 EL负责展示
JSTL的使用
-
需要导入 jar 包(两个 jstl.jar standard.jar)存放位置web里的web-inf
-
在JSP页面开始的地方导入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
在需要的地方使用
<c:forEach items="${list}" var="user"><tr><td>${user.id}</td><td>${user.name}</td><td>${user.score}</td><td>${user.address.value}</td></tr> </c:forEach>
JSTL优点:
1.提供了统一的标签
2.可以用于编写各种动态的功能
常用标签:
-
set、out、remove、catch
标签:
set: 向域对象中添加数据<% request.setAttribute(key,value) %> <c:set var="name" value="tom" scope="request"></c:set> ${requestScope.name} <% User user = new User(1,"张三",66.6,new Address(1,"科技路")); request.setAttribute("user",user); %> ${user.name} <hr/> <c:set target="${(user)}" property="name" value="李四"></c:set> ${user.name}out: 输出域对象中的数据 <c:set var="name" value="tom"></c:set> <c:out value="${(name)}" default="未定义"></c:out> ${user,name}remove: 删除域对象中的数据 <c:remove var="name" scope="page"></c:remove> <c:out value="${name}" default="未定义"></c:out>catch: 捕获异常 <c:catch var="error"><%int a = 10/0;%> </c:catch>
条件标签
这篇关于JSP简述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!