JavaWeb阶段总结

一、JavaWeb

JavaWeb是什么

JavaWeb:是使用Java技术解决相关web互联网领域的技术总和;
web:简单理解网页的意思

web分类
静态web
  1. 概要:简单理解网页上的数据不会发生改变
  2. 优点 :内如稳定,易被搜索
  3. 缺点:无法动态更新,没有与数据库进行交互操作
动态web
  1. 概要:简单理解网页数据会因人而异(淘宝,京东…)
  2. 优点:页面动态更新,与数据库进行交互操作
  3. 缺点:当web动态资源,出现错误时,更改后台程序不易

二、Http协议(超文本传输协议)

概要

Http协议(超文本传输协议),用来规定浏览器与服务器之间进行通信的规则;
默认端口号:80

Https:Http协议的安全版,默认端口号为:443

两个时代
http 1.0时代
  1. 概要:一次连接只能处理一个请求
  2. 优点:节省传输时间
  3. 缺点:当遇到HTML文档中包含图片等文件,会消耗更多资源与时间,用户体验不好
http 1.1时代
  1. 概要:一次请求可以处理多个请求
  2. 优点:持久性连接、管道机制、分块传输、增加了host字段
  3. 缺点:网络延迟
请求方法、状态码介绍
get、post方法
  • get方法:请求携带参数少,大小有限制,携带参数会在URL地址栏显示,不安全,但是高效
  • post方法:请求携带参数,大小无限制,携带参数不会在URL地址栏显示,安全,低产
状态码
  • 200:代表请求成功
  • 3xx:请求重定向
  • 4xx:找不到资源
  • 5xx:服务器代码错误(502代表网关错误)

三、Servlet

Servlet简介

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

Servlet接口实现类
  • HttpServlet
  • GenericServlet

图解Servlet接口、HttpServlet、GenericServlet三者关系
在这里插入图片描述

Mapping问题
Servlet请求路径种类
  1. 单个请求路径
  2. 多个请求路径
  3. 通用请求路径
  4. 默认请求路径
  5. 自定义后缀,请求路径

注:指定的(确定的)Mapping映射路径优先级最高,若找不到映射页面,则走默认的Mapping映射路径

ServletContext

ServletContext:web容器在启动的时候,会为每个web程序都创建一个对应的ServletContext对象,代表当前的web应用;

ServletContext应用
  1. 共享数据
  2. 请求、转换
  3. 可获得ServletContext初始化参数
  4. 读取资源文件(调用getResourceAsStream()方法)
HttpServletResponse
HttpServletResponse应用
1.向浏览器输出信息(上面的案例都是)
2.下载文件
  1. 下载文件的响应头
//设置下载文件响应头,为避免中文乱码,使用URLEncoder.encode(filename,"utf-8"),参数一下载文件名,参数二编码
resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));

注:为避免中文乱码,使用URLEncoder.encode(filename,“utf-8”)来加工下,参数一:下载文件名,参数二:编码类型

  1. 具体实现类
public class Resp extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //1.获取资源绝对路径
        String realPath = this.getServletContext().getRealPath("/WEB-INF/classes/路飞.jpg");
      //2.获取下载文件名
        String filename = realPath.substring(realPath.lastIndexOf("\\") + 1);
      //3.设置下载文件响应头,为避免中文乱码,使用URLEncoder.encode(filename,"utf-8"),参数一下载文件名,参数二编码
      resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));
      //4.获取输入流
        FileInputStream input = new FileInputStream(realPath);
      //5.创建缓冲区
        int len=0;
        byte[] buffer = new byte[1024];
      //6.获取输出流,将资源写入客户端
        ServletOutputStream output = resp.getOutputStream();
        while((len=input.read(buffer))!=-1){
            output.write(buffer,0,len);
        }
      //7. 关闭流
      input.close();
      output.close();

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

3.重定向

重定向:即一个web资源收到客户端请求后,通知客户端去访问另一个web资源的过程

  • 使用sendRedirect(“跳转路径”);

图解
在这里插入图片描述

HttpServletRequest

HttpServletRequest :HttpServletRequest代表客户端请求,用户通过http协议访问服务器,http请求中的所有信息会被封装在HttpServletRequest对象中,通过使用该对象的方法,可以获得请求的所有信息

  1. 获取前端初始化参数方法
    1. getParameter() 返回一个String类性值
    2. getParameterValues() 返回一个String类型数组
  2. 请求,转换方法
    getRequestDispatcher(路径)
    forward()

四、Cookie&&Session

会话

会话: 既用户打开浏览器,访问多个web资源后,关闭浏览器的过程,称之为会话;

有状态会话

有状态会话:既用户访问过页面后,下次再来访问时,服务器能够识别出用户曾经访问过该页面的过程;

保存会话的两种机制
  1. cookie : 客户端技术
  2. Session : 服务器技术
cookie(客户端技术)
客户端获得cookie过程:
  1. 从请求中拿到cookie信息
  2. 通过服务器响应给客户端
cookie细节
  1. 一个cookie只能保存一个信息
  2. 一个web站点可以给浏览器发送多个cookie,最多存放20个
  3. cookie大小限制为4kb
  4. 一个浏览器的cookie上限为:300个
如何删除cookie
  1. 关闭浏览器,意味着一次会话结束,对应的,cookie也会自动失效;
  2. 通过setMaxAge()方法,设置cookie的有效时间(最大生存时间)为0;
Session(服务器技术)
Session是什么:

在计算机中,尤其是在网络应用中,称为"会话控制"。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。

Session生命周期、作用

生命周期:当客户端访问时,服务器会给用户,创建一个Session对象,该对象只要浏览器没关,便会一直存在
作用:用来存储用户信息

Session与cookie的区别
  1. cookie把用户的数据写给浏览器,由浏览器保存;
  2. Session将用户的数据写到用户的独占的Session中,由服务器保存;
  3. Session对象有服务器创建;
如何使会话自动过期
  1. 在web.xml中的session-config配置
    session-timeout元素用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。如果 session-timeout元素的值为零或负数,则表示会话将永远不会超时。
   1. <session-config> 
   2.       <session-timeout>30</session-timeout> 
   3. </session-config> 
  1. 在程序中调用session的setMaxInactiveInterval方法设置
    代码如下:session.setMaxInactiveInterval(30 * 60); //单位是以秒为单位

五、Jsp

什么是Jsp

JSP全名为Java Server Pages,中文名叫java服务器页面,是一种动态网页技术标准 ,其根本是一个简化的Servlet设计,是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。

Jsp与HTML区别
  1. HTML只给用户提供静态的数据
  2. Jsp页面中可以嵌入Java代码,为用户提供动态数据
  3. Jsp本质上是一个Servlet
Jsp基础语法

注:在jsp页面中Java代码会原封不动的输出;HTML代码,则会通过out.write()输出

表达式

作用:将程序的输出,输出到客户端
格式:<%= 变量或者是表达式%>

脚本片段

格式:<% java代码或者是HTML代码块%>

Jsp声明

格式:<%!变量或者是方法%>
注:表达式与脚本片段运行后,会生成在Jsp生成的java类中的_jspService方法中;但是Jsp声明会被编译到Jsp生成的java类中

JSP指令

格式:<%@指令名 %>(指令名:page、taglib 、include )

特别注意:<%@include%>与jSP标签:<%jsp:include:xxx%>两者作用都是将几个页面合成
但是前者将几个页面融合在一个页面中;后者是页面的拼接,原先是几个页面后面还是几个页面

9大内置对象

PageContext、Request、Response、Session、Application 【SerlvetContext】、config 【SerlvetConfig】、out 、page、exception

可用于存放信息的对象,以及作用域
  1. PageContext :保存的数据只在一个页面中有效
  2. Request:保存的数据只在一次请求中有效,请求转发时会携带该数据
  3. Session:保存的数据会在一次会话中有效,从打开浏览器,到关闭浏览器
  4. Application :保存的数据只在服务器中有效,从打开服务器,到关闭服务器
    从底层到高层的作用域:PageContext -Request-Session-Application
PageContext相关配置
  1. setAttribute(String,Object,int i)
    该方法的参数三可以设置作用域
pageContext.setAttribute("null","null",PageContext.SESSION_SCOPE);
  1. forword()
    通过该法,可以用与跳转页面
pageContext.forward("/error1.jsp");
JSP标签、JSTL标签、EL表达式
EL表达式

格式:${ 变量名}
作用:

  1. 获取数据
  2. 执行运算
  3. 获取web开发的常用对象

EL表达式获取表单中的数据:${param.参数名}

JSP标签

个别举例:

<jsp:include page="index.jsp" flush="true" ></jsp:include>
<jsp:forward page="error1.jsp" ></jsp:forward>
JSTL表达式

JSTL标签库的使用就是为了弥补HTML标签的不足;JSTL标签库自定义许多标签,可以供我们使用
注意:要使用JSTL标签,即使用JSTL标签库时需导入jstl-api、standard的jar包;jstl-api的jar包在项目中有,但是在Tomcat发布的应用WEB-INF的lib目录下不存在,为了程序正常运行,需要手动将其复制过去

set标签
<%--set标签--%>
<c:set var="score" value="76" scope="page" ></c:set>
if标签
<%--if标签--%>
<c:if test="${score>80}" var="isTrue"/>
<c:if test="${!isTrue}">
    <c:out value="成绩小与80"></c:out>
</c:if>
choose标签,when标签
<%--choose标签,when标签--%>
<c:choose>
    <c:when test="${score>90}">
        <span style="color: aqua">优秀</span>
    </c:when>
    <c:when test="${score>80}">
        <span style="color: aquamarine">良好</span>
    </c:when>
    <c:when test="${score>70}">
        <span style="color: antiquewhite">中等</span>
    </c:when>
</c:choose>
forEach标签
<%
    ArrayList<String> lala = new ArrayList<>();
    lala.add("张三");
    lala.add("李四");
    lala.add("劳务");
    lala.add("啦啦");
    lala.add("哈哈");
    request.setAttribute("la",lala);
%>
<%--forEach标签--%>
<c:forEach var="s" items="${la}">
    <c:out value="${s}"></c:out><br>
</c:forEach>
forEach标签2

相关参数介绍:

  1. var:每次遍历出来的变量名
  2. items:遍历的对象
  3. begin:遍历开始位置
  4. end:遍历结束的位置
  5. step:步长,相当于i++的作用
<%--forEach标签2  --%>
<c:forEach var="s" items="${la}" begin="0" end="4" step="2">
    <c:out value="${s}"></c:out><br>
</c:forEach>

六、JavaBean

什么是JavaBean

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。 换句话说,JavaBean就是一个java的类,书写javaBean类必须满足以下条件:

  1. 具有无参构造
  2. 属性私有化
  3. 提供get与set方法

作用:一般用来和数据库的字段来做意义映射

七、MVC三层架构

MVC概要

  • Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型(domain)或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。

  • View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。

  • Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作。

八、Filter(过滤器)

什么是Filter

Filter:过滤器 ,用来过滤网站的数据;
过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理

Filter开发过程
  1. 导入包
  2. 实现javax.servlet包下的Filter接口
  3. 在web.xml中配置Filter

注:1. 过滤器中的所有代码,在过滤特定请求时都会执行,比如下面案例中:只要请求路径为/a/*,都会执行过滤器中代码

注:2.必须要让过滤器继续通行,将请求向下提交,即实现doFilter()方法中第三个参数特有的doFilter()方法:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值