Javaweb基础总结


前言

JavaWeb框架虽然是老技术,但是还有很多地方值得我们学习的。甚至依然有些学校开设这门课程。
我们在学习这门技术的同时也要站在思想层面去思考它
利用假期的时间,我再次学习了一遍JavaWeb
让我们来看看它有哪些知识点吧。

一、3大组件(重点)

Java的三大组件有哪些呢?
1、Servlet
2、Listener 监听器
3、Filter 拦截器(过滤器)
下面我们对这三大组件进行详细介绍

1、Servlet

Servlet的特点

1、是JavaWeb的三大组件之一
2、是JavaEE规范之一,也就是接口
3、是服务器中的Java小程序,用于接收请求和响应请求

Servlet的作用

用于客户端和服务端的交互,接收客户端的请求和响应客户端。
逻辑图如下:
Servlet(小庄)

Servlet的生命周期

  1. 创建Servlet实例
  2. 初始化Servlet,执行init()初始化方法
  3. 执行Service()方法(用于处理请求和响应的方法)
  4. Servlet的销毁,执行destroy()销毁方法

Servlet容器加载Servlet,加载完成后,Servlet容器会创建一个Servlet实例并调用init()方法,init()方法只会调用一次,当web工程停止的时候调用destroy()销毁方法

service()方法的介绍

源码

@Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

    }

通过上面源码我们发现service()方法有两个参数,分别为:

ServletRequest对象:主要用于接收客户端的请求,对客户端的请求进行处理的对象。
ServletResponse对象:主要用于接收服务端的响应信息

一般在实际项目开发中,都是使用继承HttpServlet类的方式去实现Servlet程序

实际开发中使用Servlet

步骤:
1、编写一个类去继承HttpServlet
2、根据请求类型(get请求,post请求)重写 doGet()doPost()方法
3、到web.xml中的配置Servlet程序的访问地址(或者通过注解的方式在类头配置@WebServlet("\访问地址"))

如下:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * @Author:小庄
 */
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("这里处理get请求的代码");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     System.out.println("这里处理post请求的代码");
    }
}

GET请求有哪些?

  • form标签 method=“get”
  • a标签的跳转
  • link标签引入css
  • Script标签引入js文件
  • img标签引入图片
  • iframe标签引入html页面
  • 在游览器地址栏中输入地址敲回车

POST请求有哪些?

  • form标签 method=“post”

我们发现doGet()doPost()方法都有HttpServletRequestHttpServletResponse对象,在实际开发中也常用到它

HttpServletRequest的常用方法

方法作用
getRequestURI()获取请求的资源路径
getRequestURL()获取请求的统一资源定位符
getRemoteHost()获取客户端的ip地址
getHeader()获取请求头
getParameter()获取请求的参数
getMethod()获取请求的方式GET或POST
getParameterValues获取请求的参数(多个值的时候使用)
setAttribute(key,value)设置域数据
getAttribute(key)获取域数据
getRequestDispatcher()获取请求转发对象
setCharacterEncoding("utf-8")设置编码格式为UTF-8
getCookies()获取Cookie数组
getSession()获取Session对象

HttpServletResponse的常用方法

方法作用
setStatus()设置响应状态码,常见有404,403,500
sendRedirect()设置重定向
getWriter()获取字符输入流对象
getOutputStream()获取字节输入流对象
addCookie()添加一个Cookie
encodeRedirectURL指定重定向的编码格式
sendError()给客户端发送一个错误响应,可发送状态码+错误信息

例如:response.getWriter().write(回传的数据);

2、Listener

Listenter的特点

  1. 是JavaWeb的三大组件之一
  2. 是JavvaEE的规范,也就是接口
  3. Listenter的作用是监听某种事物的变化。然后通过回调函数,反馈给用户(程序)去做一些相应的操作

具体的实现逻辑请参考我写的Java设计模式中的观察者模式
Java设计模式,收藏过百

3、Filter

Filter的特点

  1. Filter过滤器是JavaWeb的三大组件之一;三大组件分别是:Servlet程序就、Listener监听器、Filter拦截器(过滤器)
  2. Filter过滤器它是JavaEE的规范,也就是接口
  3. Filter过滤器它的作用是:拦截请求,过滤响应

拦截请求常见的应用场景有:

  1. 权限检查
  2. 日记操作
  3. 事务管理等

具体的实现逻辑请参考我写的Java设计模式中的责任链模式
Java设计模式,收藏过百

Filter具体实现步骤:

  1. 创建一个类实现Filter接口(import javax.servlet.*;)
  2. 重写doFilter方法并写入拦截的内容
  3. 调用chain.doFilter(req, resp);方法放行,否则就停在那里

小案例:

import javax.servlet.*;
import java.io.IOException;
/**
 * @Author:小庄
 */
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
        //这里写拦截的内容,可以对请求和响应的内容进行拦截
        //放行
        chain.doFilter(servletRequest,servletResponse);
    }
}

二、ServletConfig

顾名思义,这个类是服务器的配置类

ServletConfig类的作用

1、可以获取Servlet程序的别名 servlet-name的值
2、获取初始化参数init-param的值
3、获取ServletContext对象

项目中我们通常使用它获取ServletContext对象,代码如下:

ServletContext context = getServletConfig().getServletContext();

三、ServletContext

什么是ServletContext?

  1. ServletContext是一个接口,它表示Servlet上下文对象
  2. 一个web工程,只有一个ServletContext对象实例
  3. ServletContext对象是一个域对象

什么是域对象?

是可以像Map一样存取数据的对象,叫域对象
这里的域指的是存取数据的操作范围

存数据取数据删数据
Mapput()get()remove()
域对象setAttribute()getAttribute()removeAttribute()

ServletContext的作用

我们先获取ServletContex对象

ServletContext context = getServletConfig().getServletContext();

1、获取web.xml中配置的上下文参数context-param中的值

context.getInitParameter("");//里面写参数名

2、获取当前的工程路径,格式: /工程路径

context.getContextPath()

3、获取工程部署后在服务器硬盘上的绝对路径

context.getRealPath("/");

4、像Map一样存取数据

context.setAttribute("key","value");//存数据
context.getAttribute("key");取数据

四、请求转发和重定向

1、请求转发

请求转发的特点

  1. 游览器地址栏没有变化
  2. 一次请求
  3. 共享域对象的值
  4. 可以转发到WEB-INF目录下 //默认情况下,游览器不能直接访问WEB-INF目录
  5. 不能访问工程以外的资源 //如:不能访问百度的网页

具体使用

	request.getRequestDispatcher(工程的具体地址).forward(request,response);	//forward的参数是请求和响应的值

2、重定向

定义:是指客户端给服务器发请求,然后服务器告诉客户端说:我给你新地址

也就是说,服务端告诉客户端,叫客户端重新访问重定向的地址,注意,不能重定向自身的请求地址,不然会陷入死循环

具体使用

response.sendRedirect(绝对地址)

绝对路径和相对路径

相对路径

.	表示当前目录
..	表示上一级目录
资源名	表示当前目录下的资源名

绝对路径

http://ip:port/工程路径/资源路径

Web中 /斜杠的不同意义

在web /斜杠是一种绝对路径
/斜杠如果被游览器解析,得到的地址是http://ip:port/
/斜杠如果被服务器解析,得到的地址是http://ip:port/工程路径

五、关于XML

作用

  1. 能够保存数据,并且这些数据具有自我描述性
  2. 还可以做为项目或者模块的配置文件
  3. 还可以做为网络传输数据的格式(JSON为主)

XML命名规则

  1. 名称不能以数字或标点符号开始
  2. 名称不能包含空格

XML标签

//单标签
<hello />
//双标签
<hello></hello>

XML属性

  1. 属性可以提供元素格外信息
  2. 一个标签可以有多个属性,每个属性的值必须使用双引号引起来

XML语法规则

所有XML元素都须有关闭标签,也就是闭合。可以看上面的单标签和双标签

XML文档必须有根元素

根元素就是顶级元素
没有父标签的元素

XML中的特殊字符

> 特殊字符 &gt;
< 特殊字符 &lt;

不让XML解析(文本区域):<![CDATA[内容]]>
例如:

<![CDATA[
<<<<<您好
]]>

输出结果为:<<<<<您好

结语

关于JSP、EL表达式和数据库连接的内容不讲解,如果想看具体项目中怎么使用,请参考我的专栏:JavaWeb

最后:祝国庆愉快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值