Java web

文章目录
1. 和Tomcat服务器
1.1 使用tomcat前的准备Web概述
1.2 tomcat的目录结构
1.3 启动和关闭Tomcat服务器
1.4 Tomcat的其他设置
1.5 Web概述
1.6 动态Web工程目录
2. Servlet程序
2.1 Servlet介绍
2.2 实现Servlet的方式
2.3 Servlet的继承体系
2.4 Servlet生命周期
2.5 Servlet实现原理
2.6 Servlet常用类
2.6.1 ServletConfig
2.6.2 ServletContext
2.6.3 HttpServletRequest
2.6.4 HttpServletResponse
2.6.5 请求和重定向
2.7 Http协议
3. JSP页面、EL表达式、JSTL标签库
3.1 Jsp简介
3.2 Jsp指令
3.3 Jsp常用脚本
3.4 JSP注释
3.5 JSP内置对象
3.6 JSP动作指令
3.7 JavaBean
3.8 EL表达式
3.8.1 EL运算
3.8.2 EL表达式的11个隐含对象(EL表达式自己定义的)
3.9 JSTL标签库
3.9.1 JSTL标签库介绍
3.9.2 常用标签
3.10 MVC三层架构
4. Listener介绍、Cookie、Session会话技术
4.1 会话和状态会话
4.2 保存会话的两种技术
4.3 Cookie和Session的区别
5. filter过滤器
5.1 filter介绍
5.2 使用Filter过滤器
5.3 filter生命周期
5.4 filter常用类
5.4.1 filterConfig
5.4.2 filterChain过滤链
5.4.3 拦截路径的三种方式
十、Maven项目管理、Git & Github的使用
10.1 Maven自动化构建工具
10.1.1 Maven的核心概念
10.1.1.1 Maven简介
10.1.1.2 约定的目录结构和pom文件
10.1.1.3 坐标、依赖、打包类型
10.1.1.4 仓库
10.1.1.5 生命周期、插件、命令
10.1.2 IDEA集成Maven环境
1) 在IDEA中配置本地Maven
2) 对新导入或新建的项目使用旧的Maven设置
3) 创建Maven下的JavaSE项目
4) Maven的工作窗口
5) IDEA中配置pom.xml文件来实现依赖
6) IDEA中导入Maven工程
10.1.3 Maven的配置和依赖管理
10.1.3.1 依赖管理
10.1.3.2 Maven配置
10.2 Git & Github
十一、文件的上传和下载
十二、Ajax、JSON、
十三、Smbms超市订单管理系统
十四、补充内容
14.1 数据库分页
1. Web概述和Tomcat服务器
1.1 使用tomcat前的准备
安装并配置jdk
下载并解压Tomcat
配置环境变量
变量名:CATALINA_HOME
变量值:
bin    专门用来存放Tomcat服务器的可执行程序
conf    存放Tomcat的配置文件
lib    存放Tomcat的ja刚刚安装的路径
1.2 tomcat的目录结构
目录名    作用r包
logs    存放Tomcat服务器运行时输出的日志
temp    存放Tomcat运行时产生的临时数据
webapps    存放部署的Web工程
work    Tomcat的工作时目录
1.3 启动和关闭Tomcat服务器
启动Tomcat服务器

找到Tomcat目录下的bin中的startup.dat, 双击启动。

打开命令行, cd到bin下, catalina run指令

关闭Tomcat服务器

关闭命令窗口

找到bin下的shutdown.bat执行

将Tomcat服务窗口置于当前页面, ctrl+c

测试Tomcat

http://locathost:8080

http://127.0.0.1:8080

http://真实IP:8080

1.4 Tomcat的其他设置
修改端口号

找到Tomcat目录下的conf目录, 找到Server.xml修改端口号


配置主机名

部署web工程

把Web工程目录拷贝到Tomcat目录下的webapps中
1
用手托的方式和在http:ip 端口号/工程名访问的区别

用手托使用的是file://协议
在浏览器中输入http://使用的是http协议

当我们在浏览器地址栏中输入访问地址, 没有工程名时, 默认访问的是root工程
当我们在浏览器地址栏中输入访问地址, 没有资源名时, 默认访问index文件

网站访问的原理
1. 输入域名,回车
2. 在本地的c:/windows/System32/drivers/Etc/Hosts配置文件下有没有这个域名映射
有 返回对应的ip地址
没有 去dns服务器中寻找 找到放回

1.5 Web概述
JavaWeb是什么?

    JavaWeb是动态Web资源开发技术, 所有通过Java语言编写可以通过浏览器访问的程序总称, 叫做JavaWeb
    JavaWeb是基于请求和响应来开发的
1
2
什么是请求?

    请求(Request)是指客户端给服务器发送数据。
1
什么是响应?

    响应(Response)是指服务器给客户端回传数据。
1
两者之间的联系?

    有请求就有响应!
1
Web资源的分类

Web资源按实现的技术和呈现的效果不同, 又分为静态资源和动态资源两种
静态资源: html css js txt MP4 jpg
动态资源: jsp页面 Servlet程序…

常用的Web服务器

 Tomcat  jboss  GlassFish  Resin  WebLogic.....
1
1.6 动态Web工程目录


2. Servlet程序
2.1 Servlet介绍
Servlet是JavaEE的规范之一,规范就是接口。
Servlet是JavaWeb三大组件之一, 三大组件分别是:Servlet程序, listener监听器, filter过滤器。
Servlet是运行在服务器端的一个java小程序, 它可以接收客户端的请求, 并响应数据。
2.2 实现Servlet的方式
方式1: 实现Servlet接口

 1. 编写类实现Servlet接口
 2. 实现Service方法, 处理请求并响应数据
 3. 在Web.xml中配置Servlet程序的访问地址
1
2
3
方式2: 继承HttpServlet

  1. 编写类继承httpServlet 
  2. 重写doGet  doPost方法(Service方法做了分发处理)
          note: 如果重写了init方法需要在第一行加上super.init(config);
  3. 到web.xml中配置Servlet的访问地址
1
2
3
4
Web.xml的执行过程 
配置Web.xml

Mapping的配置

mapping可以指定多个资源路径(多指定几个Servlet-mapping)

mapping可以指定通用路径(*)

mapping可以自定义后缀
*.xxx

2.3 Servlet的继承体系


2.4 Servlet生命周期
1. 类加载,然后执行Servlet构造方法
2. web容器执行init()初始化方法初始化Servlet容器
           前两步, 是在第一次创建Servlet程序时会调用
3. 执行service方法
      每次执行都会调用
4. 执行destroy销毁方法
      工程停止时会调用
1
2
3
4
5
6
7
2.5 Servlet实现原理
  1.浏览器向服务器发出GET请求(请求服务器ServletA)

  2.服务器上的容器逻辑接收到该url,根据该url判断为Servlet请求,此时容器逻辑将产生两个对象:请求对象(HttpServletRequest)和响应对象(HttpServletResponce)

  3.容器逻辑根据url找到目标Servlet(本示例目标Servlet为ServletA),且创建一个线程A

  4.容器逻辑将刚才创建的请求对象和响应对象传递给线程A

  5.容器逻辑调用Servlet的service()方法

  6.service()方法根据请求类型(本示例为GET请求)调用doGet()(本示例调用doGet())或doPost()方法

  7.doGet()执行完后,将结果返回给容器逻辑

  8.线程A被销毁或被放在线程池中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
注意:

在容器中的每个Servlet原则上只有一个实例
每个请求对应一个线程
多个线程可作用于同一个Servlet(这是造成Servlet线程不安全的根本原因)
每个线程一旦执行完任务,就被销毁或放在线程池中等待回收
2.6 Servlet常用类
2.6.1 ServletConfig
 ServletConfig在访问Servlet程序时由Tomcat创建, 是Servlet的配置文件
1
ServletConfig的作用

获取别名
this.getServletConfig().getServletName();
获取初始化参数init-param(需要在servlet下配置)
this.getServletConfig().getInitParameter(“root”);
获取ServletContext上下文对象
this.getServletConfig().getServletContext();
2.6.2 ServletContext
ServletContext介绍

1. ServletContext是一个接口, 它表示Servlet的上下文对象
2. 一个Web工程只有一个ServletContext对象实例(全局唯一性)
3. ServletContext是一个域(存取数据的操作范围)对象    类似map对象
      存操作         setAttribute() 
      取操作         getAttribute()
      删除操作     removeAttribute()
4. ServletContext在web工程部署时启动, 在停止工程时销毁
1
2
3
4
5
6
7
ServletContext的作用

共享数据(域对象) 、请求转发、获取上下文参数context-param
getServletConfig().getServletContext().getInitParameter(“String s”)
获取当前的工程路径, 格式:/工程路径
getContextPath()
获取工程部署后在服务器硬盘上的绝对路径
getRealPath("/")
注: /被服务器解析地址为: http://ip:port/工程名/ 映射到IDEA代码web目录上
像map一样存取数据
setAttribute/getAttribute/removeAttribute
读取资源文件(读取Properties)
获取ServletContext的三种方式
this.getServletContext()
this.getServletConfig().getServletContext()
req.getSession().getServletContext()

2.6.3 HttpServletRequest
 每次只要有请求进入Tomcat服务器, Tomcat服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中。然后传递到Service方法(doGet/doPost)中, 我们可以通过HttpServletRequest对象, 获取到所有请求的信息。
 作用:
      获取客户机信息
      获取客户机参数和请求头
      实现请求转发、数据共享


常用方法
  getRequestURL()                             获取请求的资源路径(资源url)
  getRemoteURL()                             获取请求的绝对路径(完整的url)
  getQueryString()                              返回请求行中的参数部分
  getRemoteHost()                             获取客户端的主机名
  getRemoteAddr()                             获取客户端的ip地址
  getRemotePort()                              获取客户端的端口号
  getHeader(String s)                         获取请求头
  getParameter()                                获取请求参数
  getParameterValue()                           获取请求组     
  getMethod()                                   获取请求类型
  setAttribute(key,value)                       设置域数据
  getAttribute(key)                             获取域数据
  getRequestDispatcher()                        获取请求转发对象

 解决post中文乱码:    req.setCharacterEncoding("char")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2.6.4 HttpServletResponse
 和httpServletRequest类一样, 每次请求进来, Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用, 我们如果需要设置返回给客户端的信息, 都可以通过HttpServletResponse对象来设置(下载文件, 给客户端写数据, 写响应头, 重定向)
 作用:  给客户端写数据
           字节流         getOutputStream()                 用于下载
           字符流         getWriter()                       用于回传字符串
    注: 两个流同时只能使用一个
 写响应头
          resp.setHeader();
 重定向
         resp.setHeader("Refresh","5; url= xxxx ");
         resp.sendRidect("");
1
2
3
4
5
6
7
8
9
10
下载文件的逻辑
1. 获取文件的绝对路径 this.getServletContext().getRealPath("/img/相关指令.PNG");
2. 获取文件名 realPath.subString(realPath.lastIndexOf("//")+1)
3. 修改响应头 resp.setHeader(“content-disposition”, “attachment;filename=”+fileName);
4. io流操作

下载中文文件时,需要注意的地方就是中文文件名要使用URLEncoder.encode方法进行编码(URLEncoder.encode(fileName, “字符编码”)),否则会出现文件名乱码。

解决乱码问题
resp.setContentType(“text/html; charset=UTF-8”);

2.6.5 请求和重定向
请求转发

什么是请求转发?
请求转发是指, 服务器收到请求后, 对请求进行操作, 当业务逻辑比较复杂时, 需要对Servlet1的结果转交给另一个Servlet程序进行操作, 最后返回到客户端, 这就是请求转发。


重定向

是指给客户端给服务器端发请求, 服务器返回客户端一些地址, 让客户端重新定向(因为之间的地址可能被废弃了)

请求转发和请求重定向的区别

相同点

    页面都会实现跳转
1
不同点

    请求转发的时候, url不会产生变化, 重定向反之。
    请求转发共享Request域的数据。
    请求转发可以转发到WEB-INF下的资源。
    请求转发不可以访问工程外的资源。
    请求转发是一次请求。
1
2
3
4
5
2.7 Http协议
什么是HTTP协议?

        客户端和服务器之间通信时发送的数据需遵守的规则, HTTP协议中的数据又叫报文。
1
请求的HTTP协议格式

       GET
             请求行 
                      - 请求的方式
                      - 请求的资源路径[+?+请求参数]
                      - 请求的协议版本号
             请求头
                     key:value  组成  不同的键值对, 不同的含义
1
2
3
4
5
6
7


  POST
            请求行、头基本同GET(POST请求头有空行)
            POST请求体  == >  发送给服务器的数据
1
2
3

常见请求头
Accept: 表示客户端可以接收的数据类型
Accept-Languege: 表示客户端可以接收的语言类型
User-Agent: 表示客户端浏览器的信息
Host: 表示请求的服务器IP和端口号

    响应的HTTP协议格式
             响应行
                   (1) 响应的协议和版本号
                   (2) 响应状态吗
                   (3) 响应状态描述符
             响应头
                   (1) key:value      不同的响应头, 有其不同的含义
                   空行
             响应  -->  回传给客户端的数据
1
2
3
4
5
6
7
8
9


常见响应码说明
         200               请求成功
         302               请求重定向
         404               请求服务器已经收到了, 但是数据不存在
         500               请求服务器收到, 但是服务器内部出错
1
2
3
4
5
3. JSP页面、EL表达式、JSTL标签库
3.1 Jsp简介
   -  JSP(Java server pages)  Java的服务页面
   -  JSP的主要作用是代替Servlet程序回传html页面的数据
   -  因为Servlet程序回传HTML页面数据是一件很繁琐的事, 开发成本和维护成本极高
   -  JSP本质上是一个Servlet程序(HttpJspBase类继承了HttpServlet类)
   -  当我们第一次访问JSP页面时, Tomcat服务器会帮我们把jsp页面翻译为一个java源文件, 并编译生成.class字节码程序。
1
2
3
4
5
3.2 Jsp指令
   1.Page指令
       <%@ page content Type="text/html;charset=utf-8" language="java" %>
       JSP的page指令可以修改jsp页面中一些重要的属性, 或者行为

        - language                                     表示jsp翻译后是什么语言文件
        - contentType                                  jsp返回的数据类型是什么, 也是源代码中response.setContentType("xxx");这句                       
        - pageEncoding                                 jsp页面的字符集                     
        - import                                       跟java源代码中一样, 用于导包、导类
        - autoFlush(Out输出流专用)                      设置当out输出流缓冲流满了之后,是否自动刷新缓冲区
        - buffer(Out输出流专用)                         设置缓冲区大小
        - errorPage                                    设置当jsp页面运行时出错, 自动跳转到错误的页面
        - isErrorPage                                  设置当前jsp页面是否是错误信息页面, 默认是false
        - session                                      设置访问当前jsp页面,是否会创建HttpSession对象,默认是true          
        - extends                                      设置jsp翻译出来的类默认继承谁
      note: 除了特殊情况基本都是默认

  2.include指令
       -  JSP静态包含标签
                <%@ include file=""%>
                特点:     1. 静态包含不会翻译被包含的jsp页面 
                          2. 静态包含其实是把被包含的jsp页面的代码拷贝到包含的位置
        
       -  JSP动态包含标签
                <jsp:include page=""></jsp:include>
                特点:     1. 动态包含会把包含的jsp页面翻译成java代码
                          2. 动态包含底层代码使用如下代码去调用被包含的jsp页面执行输出
                              JspRuntimeLibrary.include(request,response,"",out,false)
                           3. 可以传递参数
  3.Taglib指令
    - 引入jstl标签库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
定制错误页面
当某个页面出错后, 使用errorPage跳转到错误页面

3.3 Jsp常用脚本
声明脚本
<%! 声明java代码 %>
作用: 给jsp翻译出来的java类定义属性和方法, 甚至是静态代码块或内部类
note: 声明脚本中声明的是成员变量, 在第一次运行jsp时执行一次, 而代码脚本的是每次都会执行
表达式脚本
<%= 表达式%>
作用: 在jsp页面上输出数据
特点: 1. 所有的表达式脚本都会被翻译到_jspService方法中。
2. 表达式脚本都会成为out.print()输出到页面上。
3. 由于表达式脚本翻译的内容都在_jspService方法中, 所以_jspService方法中的对象都可以直接使用。
4. 表达式脚本中的表达式不能以分号结束
代码脚本
<% Java语句%>
作用: 可以在jsp页面中, 编写我们自己需要的功能(写的java语句)
特点: 1. 代码脚本翻译之后都在_jspService方法中
2. 代码脚本由于翻译到_jspService方法中, _jspService中的对象都能用
3. 代码脚本还可以由于多个代码脚本块组成完成一个完整的java语句
4. 代码脚本还可以和表达式脚本组合使用
3.4 JSP注释
 html注释    <!--注释内容-->
 Java注释    //   /* */
 JSP注释    <%--注释内容--%>
1
2
3
3.5 JSP内置对象
  -  jsp中的内置对象, 是指Tomcat在翻译jsp页面成为Servlet源代码后, 内部提供的九大对象。 
       request                                    请求对象
       response                                   响应对象
       PageContext                                jsp的上下文对象
       session                                    会话对象
       application                                ServletContext对象
       config                                     ServletConfig对象
       out                                        jsp输出流对象  
       page                                       指向当前jsp的对象
       exception                                  异常对象

  -  JSP四大域对象
    -  PageContext(PageContextImpl类)          当前jsp页面范围内有效
    -  Request(HttpServletRequest类)           一次请求内有效
    -  Session(HttpSession类)                  一个会话范围内有效(购物车、登录、)
    -  application(ServletContext类)           整个Web工程内都有效
  
   note: 1. 域对象是类似于map一样存取数据的对象, 四个域对象功能一样, 不同的是它们范围不同。
              使用的优先顺序:  pageContext >> requset >> session >> application
         2. Out输出和getWriter输出的区别 :
        由于jsp翻译之后, 底层源代码都是使用out来进行输出, 所以我们统一以免打乱页面输出内容的顺序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
3.6 JSP动作指令
jsp:useBean       寻找或者实例化一个JavaBean
jsp:setProperty   设置JavaBean的属性
jsp:getProperty   输出某个JavaBean的属性
jsp:forward       把请求转到一个新的页面
常见的属性: id(可以通过PageContext调用)、scope(定义生命周期)
 使用实例 
    jsp:useBean   id=""   class=""
        jsp:setProperty name="id" Property="" value=""                                              
          这里调用了bean的set方法
    /jsp:userBean
    jsp:getProperty name=  Property  
          这里调用了bean的get方法
1
2
3
4
5
6
7
8
9
10
11
12
3.7 JavaBean
JavaBean是一种Java语言写成的可重用组件。
 javaBean,是指符合如下标准的Java类:
   可以序列化
   类是公共的
   有一个无参的公共的构造器(通过反射机制)
   有私有化属性,且有对应的get、set方法
1
2
3
4
5
6
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。

3.8 EL表达式
EL表达式全称(Expression Language), 是表达式语言

主要是代替jsp页面中的表达式脚本在jsp页面进行数据输出
输出数据、执行运算、获取对象
EL表达式的格式:${表达式}
注意: EL表达式输出null值会输出空串。

EL表达式搜索域数据的顺序
从最小范围的key来搜索value

3.8.1 EL运算
 -  关系运算
   ==      eq
   >       gt
   <       lt
   >=      ge
   <=      le
   !=      ne
 -  逻辑运算
   and  or  not  
   &&    ||  !
 -  算数运算
   + -  * / /div  %/mod
 -  empty运算
    empty可以判断一个数据是否为空, 输出布尔值
 以下几种情况为空
        1. 值为null值
        2. 空串
        3. Object类数组, 长度为0
        4. list集合, 元素个数为零
        5. map集合, 元素个数为零
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
3.8.2 EL表达式的11个隐含对象(EL表达式自己定义的)
    pageContext                                PageContextLmpl                             它可以获取jsp中的九大内置对象

    pageScore                                  Map<String,Object>                          它可以获取pageContext域中的数据
    requestScope                               Map<String,Object>                          它可以获取Request域中的数据
    sessionScope                               Map<String,Object>                          它可以获取Session域中的数据
    applicationScope                           Map<String,Object>                          它可以获取ServletContext域中的数据
    
    param                                      Map<String,String>                          它可以获取请求参数的值
    paramValues                                Map<String,String[]>                        它可以获取请求参数的值, 获取多个值的时候使用
   
    header                                     Map<String,String>                          它可以获取请求头的信息
    headerValues                               Map<String,String[]>                        它可以获取请求头的信息, 它可以获取多个值的情况
    
    cookie                                     Map<String,cookie>                          它可以获取当前请求的Cookie
    initParam                                  Map<String,String>                          它可以获取在web.xml中配置的context-param上下文参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3.9 JSTL标签库
3.9.1 JSTL标签库介绍
   -  JSTL标签库(JSP Standard Tag Library) JSP标准标签库, 是一个不断完善的开放源代码的JSP标签库, EL表达式主要是为了替换jsp中的表达式脚本, 而标签库则是为了替换代码脚本,  这样使得整个jsp页面变得更加简介

   -  JSTL由5个不同功能的标签库组成(数据库和xml基本不使用) 
         核心标签库(c)
         格式化(fmt)
         函数(fn)
   -  在jsp标签库中使用taglib指令引入标签库
        <%@ taglib prefix="c" url="http://java.sun.com/jsp/jstl/core" %>
        <%@ taglib prefix="fmt" url="http://java.sun.com/jsp/jstl/fmt" %>
        <%@ taglib prefix="fn" url="http://java.sun.com/jsp/jstl/functions" %>
   -  使用步骤
        1. 导包   导入jstl标签库的jar包(导入到WEB-INF下的lib包, 然后把包复制到Tomcat的lib下)
        2. 使用taglib指令引入标签库(IDEA会自动生成)
        3. 使用标签    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3.9.2 常用标签
core核心库的使用

<c:set var="" value=""/>
作用: set标签可以往域中保存数据
域对象.setAttribute(key,value);

  属性: scope(设置域)  var(设置key)   value
           - page表示PageContext域
           - request表示Request域
           - session表示Session域
           - application表示ServletContext域
1
2
3
4
5
<c:if test=“判断条件” var=“赋值给新变量” scope=“域范围”/>

<c:choose>
<c:when test=“判断条件”>输出1</c:when>
<c:otherwise>类似switch当中的default</c:otherwise>
</c:choose>

<c:forEach>
- var 每次输出的变量
- item 输出的集合/数组
- begin/end 设定开始和结束位置
- step 步长

3.10 MVC三层架构
MVC架构

什么是MVC? Model(模型) View(视图) Controller(控制器)

Model

业务处理:业务逻辑 (Service)
数据持久层:CURD操作 (DAO)
View

展示数据
提供链接发起Servlet请求(a,form,img)
Controller

接受用户的请求(req:请求参数,Session信息)
交给业务层处理对应的代码
控制视图跳转


4. Listener介绍、Cookie、Session会话技术
4.1 会话和状态会话
从用户打开浏览器开始, 访问Web资源到最后关闭浏览器为一次会话。
用户第一次访问网页, 下次再访问有些设置就无需再次设置, 直接访问, 这就是状态会话。
4.2 保存会话的两种技术
- Cookie(客户端)
       1.一个Cookie只能保存一个信息(键值对)
       2.一个Cookie大小最多4kb
       3.服务器可以给浏览器发送20个cookie
    
  获取客户端的Cookie
       req.getCookie();
  Cookie操作
       getName() getValue();  
  删除Cookie  
        1. 设置有效期为0    cookie.setMaxAge(0)
        2. 不设置有效期, 关闭浏览器自动清除Cookie
  给客户端响应Cookie
       resp.addCookie(cookie);
       cookie.setMaxAge( ns );
  
  Cookie的构造器两个参数(key和value)都是String

- Session(服务器)
       1.服务器会给每个用户(浏览器)创建一个Session对象
       2.一个Session独占一个浏览器, 只要浏览器不关闭, Sesson就一直存在
       3.用户登录后, 整个网站都可以访问, 保存用户信息, 购物车信息.....

       -  session的id会以cookie的方式发送到客户端, 值就是session的id
           
       获取Session 
             getSession()     返回HttpSession
       Session操作
             set/get/removeAttribute                   域对象
             getID                                     获取SessionID
             isNew                                     判断Session是否是新创建的
     
       手动注销Session 
             session.invalidate()
       使Session失效(web.xml中配置)
        <session-config>
                <session-timeout>秒为单位</session-timeout>   
        </sessin-config>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
4.3 Cookie和Session的区别
  1.Cookie是把用户的数据写给用户的浏览器, 浏览器保存(可以保存多个)
  2.Session是把用户的数据写到用户独占的session中, 服务器端保存(保存重要信息, 减少服务器端资源浪费)
  3.Session是服务器创建的
1
2
3
5. filter过滤器
5.1 filter介绍
Filter: 过滤器, 用来过滤网站的数据, JavaWeb三大组件之一
   - Filter是JavaEE规范之一
   - 拦截请求, 过滤响应
1
2
3


5.2 使用Filter过滤器
  1.实现Filter接口(javax.servlet)
  2.重写iniit、destroy、doFilter方法(在这个方法中拦截请求, 过滤响应)
1
2
5.3 filter生命周期
执行顺序
1. 构造器方法(在Web工程启动时自动执行)
2. 初始化init方法(在Web工程启动时自动执行)
3. doFilter过滤方法(每次拦截到请求, 就会执行)
4. destroy销毁方法(停止Web工程的时候, 就会销毁Filter过滤器)
5.4 filter常用类
5.4.1 filterConfig
Filter过滤器的配置文件类
   Tomcat每次创建Filter的时候, 也会同时创建一个FilterConfig类, 这里包含了Filter的配置信息
  作用: 获取Filter过滤器的配置内容
      1. 获取Filter的名称filter-name
      2. 获取在Filter中的初始化参数init-param
      3. 获取ServletContext对象
1
2
3
4
5
6
5.4.2 filterChain过滤链
多个Filter过滤器组成链状
FilterChain.doFilter()方法的作用
- 执行目标资源(没有Filter)
- 执行下一个过滤器(有Filter)

多个Filter过滤器的执行顺序按照Web.xml中的配置顺序执行

在Web.xml中的配置


多个Filter过滤器执行特点
所有的filter和目标资源默认都在同一个线程中
多个filter共同执行的时候, 它们都使用同一个Request对象
5.4.3 拦截路径的三种方式
 -- 精确匹配
     url-pattern    /target.jsp
 -- 目录匹配
     url-pattern    /admin/*
 -- 后缀匹配
     *后缀.xxxxx    以xxxx结尾才能拦截到
1
2
3
4
5
6
十、Maven项目管理、Git & Github的使用
10.1 Maven自动化构建工具
10.1.1 Maven的核心概念
10.1.1.1 Maven简介
10.1.1.2 约定的目录结构和pom文件
10.1.1.3 坐标、依赖、打包类型
10.1.1.4 仓库
10.1.1.5 生命周期、插件、命令
10.1.2 IDEA集成Maven环境
1) 在IDEA中配置本地Maven


点击File -> settings

2) 对新导入或新建的项目使用旧的Maven设置


3) 创建Maven下的JavaSE项目


4) Maven的工作窗口


5) IDEA中配置pom.xml文件来实现依赖
6) IDEA中导入Maven工程


10.1.3 Maven的配置和依赖管理
10.1.3.1 依赖管理
依赖的范围: 使用scope表示依赖的范围
范围表示: 这个依赖在项目构建的那个阶段起效果
scope可选值
       compile: 默认, 参与构建项目的所有阶段
       test: 测试阶段
       provided: 提供者 项目在部署到服务器时, 不需要提供这个依赖的jar, 而是由服务器这个依赖的jar包
1
2
3
4
5
6
10.1.3.2 Maven配置

10.2 Git & Github
十一、文件的上传和下载
十二、Ajax、JSON、
十三、Smbms超市订单管理系统
十四、补充内容
14.1 数据库分页

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb的jar包 antlr-2.7.7.jar aopalliance-1.0.jar asm-3.1.jar aspectjrt-1.6.0.jar aspectjtools-1.6.0.jar aspectjweaver-1.6.0.jar bcprov-jdk16-1.46.jar c3p0-0.9.1.2.jar cas-client-core-3.3.3.jar cglib-2.2.2.jar commons-beanutils-1.8.0.jar commons-cli-1.2.jar commons-codec-1.9.jar commons-collections-3.2.1.jar commons-dbcp-1.4.jar commons-fileupload-1.3.1.jar commons-httpclient-3.1.jar commons-io-2.4.jar commons-lang-2.6.jar commons-lang3-3.3.2.jar commons-logging-1.1.1.jar commons-net-3.5.jar commons-pool-1.6.jar DataCenter-util-0.0.1-20161202.072205-3.jar DmDialect-for-hibernate4.0-jdk1.6.jar dom4j-1.6.1.jar elasticache-java-cluster-client-1.0.61.0.jar ezmorph-1.0.6.jar freemarker-2.3.8.jar ftp-1.0.0.jar ggserver-core-1.0.jar ggserver-thematic-1.0.jar gson-1.6.jar hibernate-commons-annotations-4.0.5.Final.jar hibernate-core-4.3.8.Final.jar hibernate-jpa-2.1-api-1.0.0.Final.jar httpclient-4.0.jar httpclient-4.1.1.jar httpcore-4.0.jar httpcore-4.1.jar httpcore-nio-4.0.jar httpmine-4.0.jar ibatis-2.3.4.726.jar jackson-all-1.7.4.jar jackson-annotation-2.3.0.jar jackson-core-2.3.3.jar jackson-databind-2.3.3.jar java_websocket.jar javassist-3.11.0.GA.jar jaxen-1.1.jar jboss-logging-3.1.4.GA.jar jboss-logging-annotations-1.2.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Final.jar jcifs-1.3.17.jar jcl-over-slf4j-1.7.10.jar jdom-2.0.5.jar jmemcached-core-1.0.0.jar jmock-1.2.0.jar jmock-cglib-1.2.0.jar jodconverter-2.2.2.jar jodconverter-cli-2.2.2.jar json-20140107.jar json-lib-2.2.3-jdk15.jar jsqlparser-0.8.0.jar jstl-1.2.jar juh-3.0.1.jar jurt-3.0.1.jar jzlib-1.1.3.jar log4j-1.2.16.jar mongo-java-driver-3.2.2.jar mysql-connector-java-5.0.8.jar ognl-3.0.5.jar ojdbc6-1.0.jar pdfbox-app-1.6.0.jar poi-3.12.jar poi-examples-3.12.jar poi-excelant-3.12.jar poi-ooxml-3.12.jar poi-ooxml-schemas-3.12.jar poi-scratchpad-3.12.jar ridl-3.0.0.jar simple-spring-memcached-3.5.0.jar slf4j-api-1.6.0.jar slf4j-log4j12-1.6.0.jar solr-solrj-3.4.0.jar spring-aop-4.1.6.RELEASE.jar spring-aspects-4.1.6.RELEASE.jar spring-beans-4.1.6.RELEASE.jar spring-cache-3.3.0.jar spring-context-4.1.6.RELEASE.jar spring-context-support-4.1.6.RELEASE.jar spring-core-4.1.6.RELEASE.jar spring-data-commons-1.10.0.RELEASE.jar spring-data-mongodb-1.7.0.RELEASE.jar spring-expression-4.1.6.RELEASE.jar spring-instrument-4.1.6.RELEASE.jar spring-instrument-tomcat-4.1.6.RELEASE.jar spring-jdbc-4.1.6.RELEASE.jar spring-jms-4.1.6.RELEASE.jar spring-messaging-4.1.6.RELEASE.jar spring-orm-4.1.6.RELEASE.jar spring-oxm-4.1.6.RELEASE.jar spring-security-acl-3.1.6.RELEASE.jar spring-security-aspects-3.1.6.RELEASE.jar spring-security-cas-3.1.6.RELEASE.jar spring-security-config-3.1.6.RELEASE.jar spring-security-core-3.1.6.RELEASE.jar spring-security-crypto-3.1.6.RELEASE.jar spring-security-ldap-3.1.6.RELEASE.jar spring-security-openid-3.1.6.RELEASE.jar spring-security-remoting-3.1.6.RELEASE.jar spring-security-taglibs-3.1.6.RELEASE.jar spring-security-web-3.1.6.RELEASE.jar spring-test-4.1.6.RELEASE.jar spring-tx-4.1.6.RELEASE.jar spring-web-4.1.6.RELEASE.jar spring-webmvc-4.1.6.RELEASE.jar spring-webmvc-portlet-4.1.6.RELEASE.jar spring-websocket-4.1.6.RELEASE.jar struts2-core-2.3.20.jar struts2-json-plugin-2.3.20.jar struts2-sitemesh-plugin-2.0.14.jar struts2-spring-plugin-2.3.20.jar trove4j-2.0.2.jar ueditor-1.1.1.jar unoil-3.0.1.jar userSystem-1.0.jar velocity-1.5.jar xmemcached-2.0.0.jar xmemcached-provider-3.5.0.jar xmlbeans-2.6.0.jar xom-1.1.jar xpp3_min-1.1.4c.jar xstream-1.3.1.jar xwork-core-2.3.20.jar

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值