javaWeb知识点总结[云图智联]

javaWeb知识点

JSP

概念


JSP全称Java Server Page(Java服务端页面),通俗上来讲就是可以编写Java代码的HTML页面。在最早期是没有JSP的,那么后端开发人员想要展示一个网页,就是在Servlet中 拼接html. 于是就有了JSP, 但是JSP不是一门新的技术,他的本质上还是Servlet, 意思是服务器还是会将 JSP 转成Java代码,在Java代码中,还是去拼接的页面。

编译指令

  • 页指令
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" %>

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

 

<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"/>

jsp九大内置对象

request 、response、pageContext、session、application、out、congif、
page、exception

最常用的有四个:request,response,session,application

EL
概念

  • El(Expression Language),全称表达式语言,目的是尽量的消除JSP页面中的java代码

使用样例

${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}

JSTL
概念

  • JSTL(jsp standard tag library)全称为"标准标签库",使用一套标准的标签库,来极大的简化代码的编写,必须要配置EL来使用

使用样例

 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 、Listener

Filter(过滤器)


分析请求,将请求发送给指定的资源或自己创建一个响应返回。
在请求到达服务器前处理请求,设置头请求信息,将请求封装成符合规则的对象。
在响应到达客户端处理响应,将响应封装成符合规则的对象。
过滤器的用途:
认证过滤
令牌过滤
登录和审核过滤
图像装换过滤
数据压缩过滤
编码步骤:
编码,实现Filter接口
部署,在web.xml配置
运行测试

  • 过滤器是一个用于拦截在数据源和数据目的地之间消息的一个对象。

           1. Filter接口中的方法

           2. init();

          3.  doFailter();

          4.destroy();

 

Listener(监听器)

  • 当服务器发生了某个事件(Event)时,调用事件处理程序。
  • servletContext

        - 实现的接口:servletContextListener

  • ServletRequest

         实现的接口:ServletRequestListener

  • HttpSession

        实现的接口:HttpSessionListener

常用用途:

统计在线人数:HttpSessionListener
加载初始化信息:servletContextListener
统计在线人数
实现访问监控

Cookie 、Session

Cookie


使用步骤:
1. 创建Cookie对象,绑定数据

* new Cookie(String name, String value) 
 2. 发送Cookie对象
* response.addCookie(Cookie cookie) 
3. 获取Cookie,拿到数据
  • Cookie[] request.getCookies()
  • 概念:客户端会话技术,将数据保存到客户端
  • 特点
  1. cookie存储数据在客户端浏览器
  2. 浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)
  • 作用:

1. cookie一般用于存出少量的不太敏感的数据
2. 在不登录的情况下,完成服务器对客户端的身份识别

Session

  • 概念::服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession
  • 原理: Session的实现是依赖于Cookie的。
  • 特点:1.session用于存储一次会话的多次请求的数据,存在服务器端

               2.session可以存储任意类型,任意大小的数据

Session与cookie的区别

1.session存储数据在服务器端,Cookie在客户端
2. session没有数据大小限制,Cookie有
3. session数据安全,Cookie相对于不安全

(想要了解更多的职场,职业规划方面的经验,文章第一时间发布于云图智联官网)

热门文章

暂无图片
编程学习 ·

最新99道前端面试题

前言:7月份的第一天,毕业马上两年了,居安思危,为后边儿做个准备吧“即便不跳,也始终保持跳的能力”1.vue优点?答:轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习;双向数据绑定:…
暂无图片
编程学习 ·

c++ string操作

c++ string操作 #include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std;void test01() {///*string& operator=(const char* s)* string& operator=(const string &s)* string& operato…
暂无图片
编程学习 ·

2-Openwrt ipv6之-pppoev6客户端

pppoe拨号方式上网,ubunut服务器需要有pppoe-server也要有dhcpv6-server,路由器端需要ppp-client,也要odhcp6c指向pppoe-wan端口。1. PPPOEv6客户端启动过程pppoe拨号为wan上面的另一种方式,所以需要将uci里面的上网模式proto 改成pppoe config interface wanoption ipv6 1…
暂无图片
编程学习 ·

centos下安装nginx

1,环境介绍 本文安装nginx版本为1.12.2 系统版本为centos6.9 2,软件下载 链接:https://pan.baidu.com/s/1RVhCS1-WcXXaGlnAVQPH-g 提取码:od5x 3,安装nginx 1,编译安装需要安装一些兼容包 yum install pcre-devel openssl-devel gcc-c++ htop iotop iftop nmap nc telnet…
暂无图片
编程学习 ·

转 C++常用设计模式

适配器模式可以将一个类的接口转换成客户端希望的另一个接口,使得原来由于接口不兼容而不能在一起工作的那些类可以在一起工作。通俗的讲就是当我们已经有了一些类,而这些类不能满足新的需求,此时就可以考虑是否能将现有的类适配成可以满足新需求的类。适配器类需要继承或依…
暂无图片
编程学习 ·

浅析深究什么是SOA

1. 背景 IT行业就是术语和缩写流行的行业,各大厂商都喜欢隔三差五地推出一些新概念。为了不落人后,大家都喜欢争先恐后地跟进。有深入研究、务实研发的供应商,能够将概念落地,不断推出创新的产品和服务,赢得竞争优势。但“贴标签”的也大有人在,而且趋势是越贴越多,跟风…
暂无图片
编程学习 ·

2.1.2java三大特性

继承 定义:一个类继承另一个类的特性,被继承类称为父类,继承类称为子类。子类拥有父类所有的特征,并可以扩展。 实现:用extends关键字。 class Person {private String name;private int age;public String getName() {...}public void setName(String name) {...}public …
暂无图片
编程学习 ·

软件构造复习2

这里写目录标题软件生命周期和配置管理设计软件的两个基本模型模型其他模型Agile Development 软件生命周期和配置管理 (软件开发,从0到n,遵循什么过程?) 设计软件的两个基本模型模型 线性过程:从底层/需求开始,下一步是上一步的基础 迭代过程:回头解决不合理之处 其他…
暂无图片
编程学习 ·

整理得吐血了,二叉树、红黑树、B&B+树超齐全,快速搞定数据结构

前言没有必要过度关注本文中二叉树的增删改导致的结构改变,规则操作什么的了解一下就好,看不下去就跳过,本文过多的XX树操作图片纯粹是为了作为规则记录,该文章主要目的是增强下个人对各种常用XX树的设计及缘由的了解,也从中了解到常用的实现案例使用XX树实现的原因。数据…
暂无图片
编程学习 ·

free_spirit(在栈上爆破一个可以被free的fake_chunk)

free_spirit(在栈上爆破一个可以被free的fake_chunk)首先检查一下程序的保护机制然后,我们用IDA分析一下,功能3存在8字节溢出,将会把v7下面的buf指针覆盖掉,而覆盖了buf指针,就能实现任意地址写。那么,我们劫持函数栈返回地址为one_gadget即可,为了绕过结尾对buf的检查…
暂无图片
编程学习 ·

牛客习题总结21

借助别人的图……如果序列有序或者基本有序,则直接插入或者冒泡最简单无向图的顶点个数为n,则该图最多有 n(n-1)/2 条边; 有相图的顶点个数为n,则该图最多有n(n-1)条边。
暂无图片
编程学习 ·

关于atomic到底安不安全

atomic 实际上相当于一个引用计数器,这个大家很熟悉,如果被标记了atomic,那么被标记了的内存本身就有了一个引用计数器,第一个占用这块内存的线程,会给这个计数器+1,在这个线程操作这块内存期间,其他线程在访问这个内存的时候,如果发现“引用计数器”不为0,则阻塞,实…
暂无图片
编程学习 ·

深度学习~卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network,简化为ConvNet或CNN)是一种前馈神经网络,其中信息从输入到卷积运算符单向流动到输出[93]。reference:H. Cecotti and A. Graser, “Convolutional neural networks for p300 detection with application to brain-computer inte…
暂无图片
编程学习 ·

基于JavaWeb的宿舍管理系统(源码+数据库)无论文

背景: 管理信息系统在现代社会已深入到各行各业,由于计算机技术的迅速发展和 普及,信息管理系统MIS事实上已成为计算机管理信息系统,大学生宿舍管理系统就是一个典型的管理信息系统,它可以让宿舍管理工作变的更轻松。 任务:设计一个大学生宿舍管理系统。 目的: 实现系统维护…
暂无图片
编程学习 ·

vue pc支付宝支付

document.querySelector(body).innerHTML = result.data //查找到当前页面的body,将后台返回的form替换掉body内容document.forms[0].submit() ;
暂无图片
编程学习 ·

墨竹:黄金惨遭30美元抛售,强势局面犹如泡沫一触即破?

金融投资一半靠认知,一半靠心态。认知包括知识和见识。心态是指对待盈亏和获取财富的态度。股票、现货、期货、期权等金融市场充分竞争、博弈剧烈,充满一夜暴富的诱惑,也有突然降临的风险。投资者不仅要通过不断学习提高认知,还要修炼自己的心态和品性。隔夜,国际现货黄金…
暂无图片
编程学习 ·

linux下载源码并编译x264,x265并引用进FFmpeg

x264源码下载地址:https://www.videolan.org/developers/x264.html x265源码下载地址:https://www.videolan.org/developers/x265.html FFmpeg官网源码下载地址:http://ffmpeg.org/download.html FFmpeg默认支持H264的解码,但是并不支持H264的编码,如果想要让FFmpeg支持H2…