JAVAweb基本概念 IDEA创建Maven项目,maven配置web.xml,请求转发重定向,cookie session概念,jsp概念表达式,监听器,过滤器概念

目录

一、javaweb基本概念 

        更改Tomcat端口号”conf/server.xml”

​二、用Maven环境搭建项目

 三、HelloServlet

四、ookie、Session 

 五、JSP

 六、Filter过滤器

 七、监听器


一、javaweb基本概念 

——动态页面和静态页面——

示例:eShop静态与动态示例

静态页面(例如公司的门户网站),不需要与用户交互,页面内容不能变化的

动态页面(例如12306购票),需要与用户交互、页面内容会发生变化的

静态页面:

>页面内容不会发生变化(除非修改了页面代码)

>不能实现和浏览网页的用户之间进行交互

动态页面:

>动态页面以数据库技术为基础,可以根据用户的需求从数据库中获取特定的数据

>能够与用户交互(例如登录、注册、商品搜索...)

>动态页面必须要有web服务器的支持才能运行因为它需要web服务器的解释和执行

——Web应用系统基础——

Web应用系统通常也称为B/S(浏览器/服务器)

C/S:client-server(客户端/服务器),比如我们之前做的swing

B/S:browser-server(浏览器/服务器),B/S是一个特殊的C/S,B/S就是把客户端统一改成了浏览器

web应用程序工作原理图

 

-----Tomcat使用和配置-----

Tomcat下载:tomcat.apache.org

Tomcat是一个免费的开放源代码的java应用服务器。

它是Apache软件基金协会与Sun公司联合开发的Web服务器,除支持HTML静态页面外,还是JSP、Servlet等JAVA WEB应用的服务器

1>Apache是普通的web服务器,本身只支持html静态网页,还可以通过插件支持php

http://www.apache.org

2>tomcat不仅可以支持html静态网页,还支持jsp动态网页(访问html静态网页性能较差)

>它是基于apache的一个servlet容器(可以认为是apache的扩展)

http://tomcat.apache.org

静态资源服务器(不能支持jsp的服务器):apache、nginx… 

动态资源服务器(支持jsp的服务器):tomcat、jboss、jetty…

在企业中一般会使用“静态资源服务器+动态资源服务器”组合…

nginx+tomcat

Tomcat启动与停止(默认端口号8080)

服务器启动双击startup.bat文件

如果启动过程发生闪退代表服务器无法启动

解决:配置环境变量,告诉它jdk根目录在哪,tomcat根目录在哪

  1. 直接更改系统环境变量
  2. 临时更改startup.bat文件,在它顶部增加

SET JAVA_HOME=D:\Program Files\Java\jdk1.7.0_13

SET TOMCAT_HOME=E:\apache-tomcat-7.0.63

Tomcat目录结构介绍(见ppt)

webapps中必须有一个文件夹包起来才能访问,不能直接把html文件放到webapps根目录

更改Tomcat端口号conf/server.xml


二、用Maven环境搭建项目

maven的核心思想:约定大于配置

1.在javaweb开发中,需要使用大量的jar包,我们手动去导入;

2.如何能够让一个东西自动帮我导入和配置这个jar包

环境搭建

1.配置环境变量:M2_HOME maven目录下的bin目录
2.MAVEN_HOME maven的目录
3.在系统的path中的配置 %MAVEN_HOME%\bin


测试maven是否安装成功,打开cmd输入命令      mvn -version

阿里云镜像

镜像:mirrors
 作用:加速我们的下载
国内建议使用阿里云的镜像
路径: apache-maven->conf->settings.xml

maven本地仓库

建立一个本地仓库:localRepository

IDEA中的Maven操作

a.创建一个maven项目

 

 

IDEA项目创建成功后,看一眼Maven配置

b.创建一个普通的Maven项目

 标记文件夹功能

IDEA中配置Tomcat

 

pom.xml是Maven的核心配置文件 

 防止我们资源导出失败的问题

 三、HelloServlet

 

 

 ServletContext对象
存与取

 请求转发与重定向

面试题:重定向与请求转发的区别?
相同点:页面都会实现跳转
不同点:请求转发,url不会产生变化,307
            重定向:url地址栏发生改变,302

 

 HttpServletRequest

代表客户端的请求,用户通过Http协议访问服务器,Http请求中的所有信息会被封装到HttpservletRequest,通过这个HttpSerlvetRequest的方法,获得客户端的所有信息;

四、ookie、Session 

cookie:客户端技术(响应、请求)
session:服务器技术,利用这个技术,可以保存用户的会话信息,我们可以把信息或者数据放在session中!

常见场景:网站登录之后,你下次不用再登录了,第二次访问直接就登上去了

服务器响应给客户端cookie

cookie:一般会保存本地的 用户目录下appdata;

一个网站cookie是否存在上限?

a.一个cookie只能保存一个信息;
b.一个web战点可以给浏览器发送多个cookie ,最多存放20个cookie;
c.Cookie大小有限制4kb;
d.300个cookie浏览器上限

删除cookie
a.不设置有效期,关闭浏览器,自动失效;
b.设置有效期时间为0

编码解码

什么是Session?
 1.服务器会给每一个用户(浏览器)创建一次会话(一个Session对象),一个浏览器对应一个session
 2.一个Session独占一个浏览器,只要浏览器没有关闭,这个Session就存在
 3.用户登录之后,整个网站它都可以访问! (保存用户的信息,保存购物车的信息)

Session和cookie的区别:

 Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
Session是把用户的数据写到用户独占Session中,服务端保存(保存重要的信息,减少服务器资源的浪费)
Session由服务器创建;

使用场景:
保存一个登录用户的信息
购物车信息;
在整个网站中经常会使用的数据,我们将他保存在session中;

 

 

 五、JSP

Java Server Pages : java服务端页面,也和Servlet一样,用于动态web技术
最大特点:
 a.写jsp就像在写HTML
 b.区别:
        html只给用户提供静态的数据
        jsp页面中可以嵌入java代码,为用户提供动态数据;
 

jsp原理
思路:jsp到底证明执行的
 代码层面没有任何问题
 服务器内部工作
  tomcat中由一个work目录;
  IDEA中使用Tomcat的会在IDEA的tomcat中生成一个work目录

IDEA tomcat的工作空间:C:\Users\taogege\AppData\Local\JetBrains\IntelliJIdea2021.3\tomcat

我电脑的地址:C:\Users\taogege\AppData\Local\JetBrains\IntelliJIdea2021.3\tomcat\a6b0cacb-35be-4fcc-b42a-a5b5fbb02eed\work\Catalina\localhost\ROOT\org\apache\jsp

发现页面转变成了java程序!

 浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet
jsp最终也会转换为一个java类

导入相关依赖

<!-- JSTL 表达式 -->
<dependency>
  <groupId>javax.servlet.jsp.jstl</groupId>
  <artifactId>jstl-api</artifactId>
  <version>1.2</version>
</dependency>
<!-- standard标签 -->
<dependency>
  <groupId>taglibs</groupId>
  <artifactId>standard</artifactId>
  <version>1.1.2</version>
</dependency>


JSP基础语法和指令

jsp表达式
作用:用来将程序的输出,输出到客户端
<%= 变量或者表达式>
<%= new java.util.Date()%>

JSP脚本片段

<%
    int sum=0;
    for (int i = 0; i <20 ; i++) {
        sum+=i;
    }
    out.println("<h1>Sum="+sum+"</h1>");
%>


JSP声明

<% 
  static{
   System.out.println("Loading Servlet")
  }

  private int num=0;
  
  public void taogege(){
    System.out.println("进入了方法taogege");
  }

%>
jsp声明:会被编译到JSP生成java的类中!其他的,就会被生成到_jspService方法中!
在Jsp中嵌入Java代码即可
<%%> 片段
<%=%>表达式
<%!%>全局方法
<%--注释--%>
jsp的注释,不会在客户端显示,html就会!

JSP配置错误页面

第一种方式,在web.xml配置

第二种,直接在jsp页面中配置

jsp指令

将头文件和尾部文件,放入网页主体中,将2个页面合二为一

 JSP内置对象
pageContext、request、response、Session、Application、config、out、page、exception

 request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用
session客户端向服务器发送请求,产生的数据,看完可能还有用,比如,购物车
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户可能还使用,比如:聊天数据

 
MVC架构

 

 六、Filter过滤器

用来过滤网站的数据
处理中文乱码,登录验证



导包注意是servlet的
实现Filter,重写init(),doFilter(),destroy()

 在web.xml中配置过滤器

/servlet/*表示servlet文件下的文件都会经过过滤器

 注意:路径前面要加servlet否则将不会经过过滤器

 七、监听器

实现一个监听器接口;(N种)
1.编写一个监听器
        实现监听器的接口

//统计网站在线人数,统计session
public class OnlineCountListener implements HttpSessionListener {

    //创建session监听,看你的举动
    //一旦创建session就会触发一次这个事件
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
        Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");

        if (onlineCount==null){
            onlineCount=1;
        }else{
            int count=onlineCount.intValue();
            onlineCount=count+1;
        }

        servletContext.setAttribute("OnlineCount",onlineCount);

    }
    //销毁session监听
    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
        Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");

        if (onlineCount==null){
            onlineCount=0;
        }else{
            int count=onlineCount.intValue();
            onlineCount=count-1;
        }

        servletContext.setAttribute("OnlineCount",onlineCount);
    }

    /**
     * Session销毁
     * 1.手动销毁 getSession.invalidate();
     * 2.自动销毁 <
     */

web.xml配置监听器

 <!--注册监听器-->
    <listener>
        <listener-class>org.tao.listener.OnlineCountListener</listener-class>
    </listener>

 过滤器,监听器常见应用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值