Javaweb

maven:

maven 依赖范围:

依赖的 jar 包,默认情况下,可以在任何地方使用。可以通过 设置其作用范围

作用范围:
  1. 主程序范围有效 (main 文件夹范围内)
  2. 测试程序范围有效 (test 文件夹范围内)
  3. 是否参加打包运行 (package 指令范围内)
scope 值 主程序 测试程序 打包 (运行) 范例
compile (默认) Y Y Y log4j
test Y junit
provided Y Y servlet-api
runtime Y Y jdbc 驱动
生命周期:

maven 的生命周期是为了对所有的 maven 项目构建过程进行抽象和统一

maven 中有 3 套相互独立的生命周期:
  1. clean:清理工作
  2. default:核心工作,如:编译、测试、打包、安装、部署等
  3. site:生成报告、发布站点等

注意:在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行

生命周期阶段:
  1. clean:移除上一次构建生成的文件
  2. compile:编译项目源代码
  3. test:使用合适的单元测试框架运行测试 (junit)
  4. package:将编译后的文件打包,如:jar、war 等
  5. install:安装项目到本地仓库

HTTP:

概念:

超文本链接协议,规定了浏览器和服务器之间数据传输的规则

特点:
  1. 基于 TCP 协议:面向连接,安全
  2. 基于请求 - 响应模型 的:一次请求对应一次响应
  3. HTTP 协议是无状态的协议:对于事务处理没有记忆能力。每次请求 - 响应 都是独立的

​ 缺点:多次请求间不能共享数据

​ 优点:速度快

HTTP 请求数据格式:
  1. 请求行:请求数据第一行 (请求方式、资源路径、协议)
  2. 请求头:第二行开始,格式 key:value

​ 1、Host:请求的主机名

​ 2、User-Agent:浏览器版本,例如 Chrome 浏览器的表示类似 Mozilla/5.0…Chrome/79,

​ IE 浏览器的标识类似 Mozilla/5.0 (windowsNT…) like Gecko

​ 3、Accept:表示浏览器能接收的资源类型,如 text/,image/ 或者 / 表示所有

​ 4、Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页

​ 5、Accept-Encoding:表示浏览器可以支持的压缩类型,例如:gzip,deflate 等

​ 6、Content-Type:请求主体的数据类型

​ 7、Content-Length:请求主体的大小 (单位:字节)

  1. 请求体:POST 请求,存放请求参数。跟请求头有一个空行隔开

​ 请求方式 - GET:请求参数在请求行中,没有请求体,如:/brand/findAll?name=OPPO&status=1

​ 请求方式 - POST:请求参数在请求体中,POST 请求大小是没有限制的

HTTP 相应格式:
  1. 响应行:响应数据第一行 (协议、状态码、描述)
  2. 响应头:第二行开始,格式 key-value
  3. 响应体:最后一部分,存放响应数据。跟响应头有一个空行隔开
  • 1XX:响应中 - 临时状态码,表示请求已经接受,告诉客户端应该继续请求,或者 如果它已经完成则忽略它
  • 2XX:成功 - 表示请求已经被成功接收,处理已完成
  • 3XX:重定向 - 重定向到其他地方;让客户端再发起一次请求以完成整个处理
  • 4XX:客户端错误 - 处理发生错误,责任在客户端。如:请求了不存在的资源、客户端未被授权、禁止访问等
  • 5XX:服务器错误 - 处理发生错误,责任在服务端。如:程序抛出异常等

  • 200:客户端请求成功,即处理成功

  • 404:请求资源不存在,一般是 URL 输入有误,或者网站资源被删除了
  • 500:服务器发生不可预期的错误,服务器出异常了,要查看日志

Content-Type:表示该相应内容的类型,例如 text/html,applicantion/json

Content-Length:表示该 i 相应内容的长度 (字节数)

Conten-Encoding:表示该响应压缩算法,例如 gzip

Cache-Control:指示客户端应如何缓存,例如 max-age=300 表示可以最多缓存 300 秒

Set-Cookie:告诉浏览器未当前页面所在的域设置 cookie

Web 服务器:

Web 服务器是一个软件程序,对 HTTP 协议的操作进行封装,简化 web 程序开发,使得程序员不必直接对协议进行操作,让 Web 开发更加便捷,主要功能是” 部署 web 项目,对外提供网上信息浏览服务”

Tomcat:

一个轻量级的 web 服务器,支持 servlet、jsp 等少量 javaEE 规范。也被称为 web 容器、servlet 容器

目录:

​ bin:可执行文件

​ conf:配置文件

​ lib:Tomcat 依赖的 jar 包

​ logs:日志文件

​ temp:临时文件

​ webapps:应用发布目录

​ work:工作目录

启动:双击 bin\startup.bat

​ 控制台中文乱码:修改 conf/logging.properties

​ java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = org.apache.juli.OnewLineFormatter java.util.logging.ConsoleHandler.encoding = UTF-8 –> 改为 = GBK

关闭:
  1. 直接关掉运行窗口:强制关闭
  2. bin\shutdown.bat: 正常关闭
  3. Ctrl+C:正常关闭
常见问题:
  1. 启动窗口一闪而过:检查 JAVA_HOME 环境变量是否正确配置
  2. 端口号冲突:找到对应程序,将其关闭掉,或者修改 Tomcat 端口号 (conf/serve.xml)
    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectProt="8843" />
注意:

HTTP 协议默认端口号为 80,如果将 Tomcat 端口号改为 80,则将来访问 Tomcat 时,将不用输入端口号

Tomcat 部署项目:

将项目放置到 webapps 目录下,即部署完成

请求响应:

请求 (HttpServletRequest):获取请求数据

响应 (HttpServletResponse):设置响应数据

BS 架构:Browser/Server,浏览器 / 服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端 (维护方便,体验一般)

CS 架构:Client/Server,客户端 / 服务器架构模式 (如微信,百度网盘) (开发、维护麻烦,体验不错)

请求简单参数:
(了解) 原始方式:

在原始的 web 程序中,获取请求参数,需要通过 HttpServletRequest 对象手动获取

@RequeutMapping("/simpleParam")
public String simpleParam(HttpServletRequest request){
String name = request.getParameter("name");
String ageStr = request.getParameter("age");
int age = Integer.parseInt(ageStr);
System.out.print(name + ":" + age);
return "OK";
}
SpringBoot 方式:

简单参数:

参数名与形参变量名相同,定义形参即可接收参数

@RequeutMapping("/simpleParam")
public String simpleParam(String name,Integer age){
System.out.print(name + ":" + age);
return "OK";
}

如果参数名对应不上,使用 @RequestParam 注解完成映射

@RequeutMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name")String username,Integer age){
System.out.print(name + ":" + age);
return "OK";
}
@RequestParam 中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。
如果该参数是可选的,可以将required属性设置为false
@RequestParam(name = "name",required = false)String username

简单实体对象:

请求参数名与形参对象属性名相同,定义 POJO 接受即可

@RequeutMapping("/simplePojo")
public String simplePojo(User user){
System.out.print(user);
return "OK";
}
public class User{
private String name;
private Integer age;
private Address address;
}
public class Address{
private String province;
private String city;
}
-------------------------------------------------
URL:localhost:8080/complexPojo?name=Tom&age=10&address.province&address.city=beijing
创作不易!转载请注明作者及文章链接或作者博客链接——
- 作者:pidanxia
- 链接:https://pidanxia.ink
(链接可为:**文章链接**或者**作者博客链接**)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇