Javaweb 学习(1)

web开发:

静态web
html,css 提供给所有人看的数据始终不会发生变化!
动态web
技术栈:Servlet/JSP,ASP,PHP
在Java中,动态web资源开发的技术统称为JavaWeb;

web应用程序:可以提供浏览器访问的程序;
web应用程序–>Tomcat:服务器
一个web应用由多部分组成 (静态web,动态web)
html,css,js
jsp,servlet
Java程序
jar包
配置文件 (Properties)
web应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理;
在这里插入图片描述

在这里插入图片描述

web服务器
1、ASP:

微软:国内最早流行的就是ASP; 在HTML中嵌入了VB的脚本, ASP + COM; 在ASP开发中,基本一个页面都有几千行的业务代码,页面极其换乱 维护成本高!

2、php

PHP开发速度很快,功能很强大,跨平台,代码很简单 (70% , WP) 无法承载大访问量的情况(局限性)

3、JSP/Servlet :

B/S:浏览和服务器
C/S: 客户端和服务器
sun公司主推的B/S架构 基于Java语言的 (所有的大公司,或者一些开源的组件,都是用Java写的) 可以承载三高问题带来的影响; 语法像ASP , ASP-->JSP , 加强市场强度;

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和 并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个Java初学web的人 来说,它是最佳的选择

Tomcat 实际上运行JSP 页面和Servlet。Tomcat最新版本为9.0。

请你谈谈网站是如何进行访问的!

  1. 输入一个域名;回车
  2. 检查本机的 C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
  3. 有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
  4. 没有:去DNS服务器找,找到的话就返回,找不到就返回找不到;
    5在这里插入图片描述

在这里插入图片描述

HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。

客户端—发请求(Request)—服务器
请求方式:Get,Post,HEAD,DELETE,PUT,TRACT…

get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不 安全,但高效
post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内 容,安全,但不高效。

服务器—响应-----客户端
200:请求响应成功 200
3xx:请求重定向 重定向:你重新到我给你新位置去;
4xx:找不到资源 404资源不存在;
5xx:服务器代码错误 500
502:网关错误

Maven

  1. 在Javaweb开发中,需要使用大量的jar包,我们手动去导入;
  2. 如何能够让一个东西自动帮我导入和配置这个jar包。 由此,Maven诞生了!
    Maven的核心思想:约定大于配置 有约束,不要去违反。

在这里插入图片描述

在这里插入图片描述

pom.xml 是Maven的核心配置文件在这里插入代码片
maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题, 解决方案:
在这里插入图片描述

Servlet简介

Servlet就是sun公司开发动态web的一门技术
Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小 步骤:
编写一个类,实现Servlet接口
把开发好的Java类部署到web服务器中。
Serlvet接口Sun公司有两个默认的实现类:
HttpServlet
GenericServlet

  1. 构建一个普通的Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立 Moudel;这个空的工程就是Maven主工程;

  2. Maven环境优化

    1. 修改web.xml为最新的
    2. 将maven的结构搭建完整
  3. 编写一个Servlet程序
    在这里插入图片描述

  4. 编写一个普通类

  5. 实现Servlet接口,这里我们直接继承HttpServlet

  6. 编写Servlet的映射
    为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器, 所以我们需要再web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;

  7. 配置Tomcat

  8. 启动测试,OK!

Servlet原理

在这里插入图片描述

Mapping问题

一个Servlet可以指定一个映射路径

<servlet-mapping>
 	<servlet-name>hello</servlet-name> 
 	<url-pattern>/hello</url-pattern> 
 </servlet-mapping>

一个Servlet可以指定多个映射路径
一个Servlet可以指定通用映射路径
默认请求路径
指定一些后缀或者前缀等等….
优先级问题(指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求)

<servlet>
	<servlet-name>error</servlet-name>
	<servlet-class>com.kuang.servlet.ErrorServlet</servlet-class> 
</servlet>
 <servlet-mapping>
	<servlet-name>error</servlet-name>
	<url-pattern>/*</url-pattern>
 </servlet-mapping>

ServletContext

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

1、共享数据
我在这个Servlet中保存的数据,可以在另外一个servlet中拿到;
2、获取初始化参数
3、请求转发
4、读取资源文件
Properties
在java目录下新建properties
在resources目录下新建properties
发现:都被打包到了同一个路径下:classes,我们俗称这个路径为classpath:
思路:需要一个文件流;

HttpServletResponse

web服务器接收到客户端的http请求
如果要获取客户端请求过来的参数:找HttpServletRequest
如果要给客户端响应一些信息:找HttpServletResponse
1、简单分类
2、下载文件

  1. 向浏览器输出消息 (一直在讲,就不说了)
  2. 下载文件
    1. 要获取下载文件的路径
    2. 下载的文件名是啥?
    3. 设置想办法让浏览器能够支持下载我们需要的东西
    4. 获取下载文件的输入流
    5. 创建缓冲区
    6. 获取OutputStream对象
    7. 将FileOutputStream流写入到buffer缓冲区
    8. 使用OutputStream将缓冲区中的数据输出到客户端!
  3. 验证码功能
    前端实现
    后端实现,需要用到 Java 的图片类,生产一个图片‘
  4. 实现重定向
    在这里插入图片描述

B一个web资源收到客户端A请求后,B他会通知A客户端去访问另外一个web资源C,这个过程叫重定向 常见场景:

面试题:请你聊聊重定向和转发的区别?
相同点 页面都会实现跳转
不同点
请求转发的时候,url不会产生变化
重定向时候,url地址栏会发生变化;

  1. 简单实现登录重定向

HttpServletRequest

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

Cookie、Session

会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之 为会话;
有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学,曾经来过,称之为有状态会 话;

  1. 服务端给客户端一个 信件,客户端下次访问服务端带上信件就可以了; cookie
  2. 服务器登记你来过了,下次你来的时候我来匹配你; seesion

保存会话的两种技术

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

  1. 从请求中拿到cookie信息
  2. 服务器响应给客户端cookie
  3. 在这里插入图片描述

什么是Session:

服务器会给每一个用户(浏览器)创建一个Seesion对象;
一个Seesion独占一个浏览器,只要浏览器没有关闭,这个Session就存在;
用户登录之后,整个网站它都可以访问!–> 保存用户的信息;保存购物车的信息……
Session和cookie的区别:
Cookie是把用户的数据写给用户的浏览器,浏览器保存 (可以保存多个)
Session把用户的数据写到用户独占Session中,服务器端保存
(保存重要的信息,减少服务器资 源的浪费) Session对象由服务创建;

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

JSP

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

JSP原理

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!
JSP最终也会被转换成为一个Java类!
JSP 本质上就是一个Servlet

  1. 判断请求
  2. 内置一些对象
  3. 输出页面前增加的代码
  4. 以上的这些个对象我们可以在JSP页面中直接使用!

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

JSP声明:会被编译到JSP生成Java的类中!其他的,就会被生成到_jspService方法中! 在JSP,嵌入Java代码即可!
JSP的注释,不会在客户端显示,HTML就会!

9大内置对象

PageContext 存东西 
Request 存东西 
Response 
Session 存东西 
ApplicationSerlvetContext】 存东西 
config 【SerlvetConfig】 
out
page ,不用了解 
exception

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

JSP标签、JSTL标签、EL表达式

<!-- 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>

EL表达式: ${ }
获取数据
执行运算
获取web开发的常用对象

<%--jsp:include--%>
<%-
http://localhost:8080/jsptag.jsp?name=kuangshen&age=12
 --%>
<jsp:forward page="/jsptag2.jsp">
	 <jsp:param name="name" value="kuangshen">
	 </jsp:param> <jsp:param name="age" value="12"></jsp:param> </jsp:forward>

JSTL表达式
JSTL标签库的使用就是为了弥补HTML标签的不足;它自定义许多标签,可以供我们使用,标签的功能和 Java代码一样!
格式化标签
SQL标签
XML 标签
核心标签 (掌握部分)
在这里插入图片描述
JSTL标签库使用步骤
引入对应的 taglib
使用其中的方法
在Tomcat 也需要引入 jstl的包,否则会报错:JSTL解析错误

JavaBean

JavaBean有特定的写法:
必须要有一个无参构造
属性必须私有化
必须有对应的get/set方法;
一般用来和数据库的字段做映射 ORM;
ORM :对象关系映射
表—>类
字段–>属性
行记录---->对象
在这里插入图片描述

MVC三层架构

什么是MVC: Model、view、Controller 模型、视图、控制器
在这里插入图片描述

Filter(重点)

Filter:过滤器 ,用来过滤网站的数据;
处理中文乱码
登录验证….
在这里插入图片描述
Filter开发步骤:

  1. 导包
  2. 编写过滤器
    1. 导包不要错
    2. 实现Filter接口,重写对应的方法即可
    3. 在web.xml中配置 Filter

监听器

实现一个监听器的接口;(有N种)

  1. 编写一个监听器
    1、实现监听器的接口…
    2、web.xml中注册监听器
    3、看情况是否使用!

JDBC 固定步骤:

  1. 加载驱动

  2. 连接数据库,代表数据库

  3. 向数据库发送SQL的对象Statement : CRUD

  4. 编写SQL (根据业务,不同的SQL)

  5. 执行SQL

  6. 关闭连接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值