JSP全称Java Server Page(Java服务端页面),通俗上来讲就是可以编写Java代码的HTML页面。在最早期是没有JSP的,那么后端开发人员想要展示一个网页,就是在Servlet中 拼接html. 于是就有了JSP, 但是JSP不是一门新的技术,他的本质上还是Servlet, 意思是服务器还是会将 JSP 转成Java代码,在Java代码中,还是去拼接的页面。
contentType:内容类型; language: 页面的语言 import: java.lang.❄ 、javax.servlet.❄、javax.servlet.jsp.❄、javax.servlet.http.*四个包不需要显式的导入。
包含指令 <%@ include file=”” %>用法是在file中书写另外一个jsp页面,该指令是一个编译期的行为。
标签库指令 <%@ taglib %>标签库指令是讲到jstl的时候会用到。
JSP声明html注释
<!-- -->隐藏注释
<%-- --%>脚本段
<%-- --%>jsp声明与表达式
声明:<%! int a = 3 %> 表达式:<%=a%>
<jsp:include page=""></jsp:include> include的动作指令与编译指令,最大的区别在于动作指令是一个运行期的行为,就在在代码的运行阶段才会将页面拼接到一起,而include的编译指令是一个编译期的行为,即页面是在编译阶段就已经合并到一起了。
jsp:forward与jsp:param <jsp:forward page="forwarded.jsp"> <jsp:param name="username" value="zhangsan"/> </jsp:forward> jsp:forward指令的意思是直接跳转到page对应的页面,可以通过 jsp:param携带参数。而到被跳转的
页面可以直接通过 request(jsp内置对象) 来获取参数的值,获取的方式如下: <% String name = request.getParameter("username"); %> <%=name %> jsp:useBean、jsp:setProperty、jsp:getProperty <%-- 相当于实例化了一个对象:User user = new User() --%> <jsp:useBean id="user" class="com.qf.domain.User"/> <%-- 相当于 user.setUsername("张三") --%>
<jsp:setProperty name="user" property="username" value="张三"></jsp:setProperty>
<%-- 相当于 user.getUsername() --%> <jsp:getProperty name="user" property="username"/>
request 、response、pageContext、session、application、out、congif、 page、exception
最常用的有四个:request,response,session,application
使用样例
${param.username} # 相当于request.getParameter(“”) ${sessionScope.name} # session.getAttribute(“name”) ${applicationScope.name} # application.getAttribute(“name”); ${requestScope.name} # request.getAttribute(“name”) ${3 + 4} ${7 * 8} ${8 / 7} ${sessionScope.user.name} # 获取session中user的name属性 ${user.name} # 会按照request -> session -> application的顺序查找 {empty requestScope.gender} #判断一个数据是否为null, 或者一个字符串为空或"" ${empty requestScope.gender ? "默认值" : requestScope.gender}使用样例
1) 引入javax.servlet.jsp.jstl.jar和jstl-impl.jar两个jar包 2) 在jsp页面的头顶加上标准标签库指令: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>if语法
<c:if test="${requestScope.age gt 18}">多个条件
<c:if test="${empty requestScope.gender && requestScope.age gt 18}">性别为空,并且是成年人.
</c:if> - **多个条件**
分析请求,将请求发送给指定的资源或自己创建一个响应返回。 在请求到达服务器前处理请求,设置头请求信息,将请求封装成符合规则的对象。 在响应到达客户端处理响应,将响应封装成符合规则的对象。 过滤器的用途: 认证过滤 令牌过滤 登录和审核过滤 图像装换过滤 数据压缩过滤 编码步骤: 编码,实现Filter接口 部署,在web.xml配置 运行测试
过滤器是一个用于拦截在数据源和数据目的地之间消息的一个对象。1. Filter接口中的方法
2. init();
3. doFailter();
4.destroy();
- 实现的接口:servletContextListener
ServletRequest实现的接口:ServletRequestListener
HttpSession实现的接口:HttpSessionListener
常用用途:
统计在线人数:HttpSessionListener 加载初始化信息:servletContextListener 统计在线人数 实现访问监控
使用步骤: 1. 创建Cookie对象,绑定数据
* new Cookie(String name, String value) 2. 发送Cookie对象 * response.addCookie(Cookie cookie) 3. 获取Cookie,拿到数据 Cookie[] request.getCookies()概念:客户端会话技术,将数据保存到客户端特点 cookie存储数据在客户端浏览器浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个) 作用:1. cookie一般用于存出少量的不太敏感的数据 2. 在不登录的情况下,完成服务器对客户端的身份识别
2.session可以存储任意类型,任意大小的数据
1.session存储数据在服务器端,Cookie在客户端 2. session没有数据大小限制,Cookie有 3. session数据安全,Cookie相对于不安全
(想要了解更多的职场,职业规划方面的经验,文章第一时间发布于云图智联官网)