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
小恐龙
花!
上一篇
下一篇