1.tomcat服务器

tomcat官网
image.png
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

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

1.1 启动

文件夹作用:
image.png
启动。关闭Tomcat
image.png
访问测试:http://localhost:8080/

可能遇到的问题:

Java环境变量没有配置
闪退问题:需要配置兼容性
乱码问题:配置文件中设置

1.2 配置

image.png
可以配置启动的端口号

  • tomcat的默认端口号为:8080
  • mysql:3306
  • http:80
  • https:443
    1. <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

可以配置主机的名称

  • 默认的主机名为:localhost->127.0.0.1
  • 默认网站应用存放的位置为:webapps
    1. <Host name="www.wulei.com" appBase="webapps" unpackWARs="true" autoDeploy="true">

    1.3 IDEA中使用Tomcat

    创建tomcat配置
    image.pngimage.png
    若模块为后来导入到项目中时,idea是没有帮忙打war包的,这时,要自己手动到项目结构中创建war包,创建完成后在tomcat配置后,即可使用
    https://blog.csdn.net/qq_42986107/article/details/92094960也可以参考这篇文章打war包方法
    image.png

    4.Http

    4.1 什么是Http

    4.2 HTTP消息结构

5.Maven

我为什么要学习这个技术?

  1. 在Javaweb开发中,需要使用大量的jar包,我们手动去导入;
  2. 如何能够让一个东西自动帮我导入和配置这个jar包。

由此,Maven诞生了!

5.1 Maven项目架构管理工具

我们目前用来就是方便导入jar包的!
Maven的核心思想:约定大于配置

  • 有约束,不要去违反。

Maven会规定好你该如何去编写我们的Java代码,必须要按照这个规范来;

5.2 下载安装Maven

官网:https://maven.apache.org/
下载完成后,解压即可;
建议:电脑上的所有环境都放在一个文件夹下,方便管理;

5.3 配置环境变量(mac)

1.在应用程序找到终端(实用工具)文件夹里面

输入命令:

  1. vi ~/.bash_profile

输入 **i** 进入编辑模式,输入:编辑
注意:**M2_HOME**需要写为自己的路径

  1. export M2_HOME=/Library/apache-maven-3.6.3
  2. export PATH=$PATH:$M2_HOME/bin

2.输入或按ESC退出编辑模式

输入:**:wq**(保存文件并退出)
输入: **source .bash_profile** (执行此文件)
查看是否配置成功,输入

  1. echo $M2_HOME
  2. mvn -version

maven的路径和版本都能正确显示,代表配置成功
image.png

3.配置阿里云镜像

image.png

  • 镜像:mirrors
    • 作用:加速我们的下载
  • 国内建议使用阿里云的镜像(在配置文件里面找mirrors标签,插入其中即可)

    1. <mirror>
    2. <id>aliyunmaven</id>
    3. <mirrorOf>*</mirrorOf>
    4. <name>阿里云公共仓库</name>
    5. <url>https://maven.aliyun.com/repository/public</url>
    6. </mirror>

    4.配置本地仓库

    配置本地仓库(直接搜索标签)

    1. <!-- 此地址为本地maven文件存放的地址 -->
    2. <localRepository>/Library/apache-maven-3.6.3/maven-repo</localRepository>

    5.Servlet

    6.6 HttpServletResponse

    web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse;

  • 如果要获取客户端请求过来的参数:找HttpServletRequest

  • 如果要给客户端响应一些信息:找HttpServletResponse

    1、简单分类

    负责向浏览器发送数据的方法
    ServletOutputStream getOutputStream() throws IOException;
    PrintWriter getWriter() throws IOException;
    负责向浏览器发送响应头的方法

  • void setCharacterEncoding(String var1);

  • void setContentLength(int var1);
  • void setContentLengthLong(long var1);
  • void setContentType(String var1);
  • void setDateHeader(String var1, long var2);
  • void addDateHeader(String var1, long var2);
  • void setHeader(String var1, String var2);
  • void addHeader(String var1, String var2);
  • void setIntHeader(String var1, int var2);
  • void addIntHeader(String var1, int var2);

常用的响应状态码

  • 200 OK 服务器成功处理了请求(这个是我们见到最多的)
  • 204 No Content 请求成功处理,没有实体的主体返回
  • 206 Partial Content GET范围请求已成功处理
  • 301/302 Moved Permanently(重定向)请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置
  • 303 See Other 临时重定向,期望使用GET定向获取
  • 304 Not Modified 发送的附带条件请求未满足
  • 307 Temporary Redirect 临时重定向,POST不会变成GET
  • 400 Bad Request 请求报文语法错误或参数错误
  • 401 Unauthorized 需要通过HTTP认证,或认证失败
  • 403 Forbidden 请求资源被拒绝
  • 404 Not Found(页面丢失)未找到资源
  • 500 Internal Server Error 服务器故障或Web应用故障
  • 501 Internal Server Error服务器遇到一个错误,使其无法对请求提供服务
  • 503 Service Unavailable 服务器超负载或停机维护

    2、下载文件

  1. 要获取下载文件的路径
  2. 下载的文件名是啥?
  3. 设置想办法让浏览器能够支持下载我们需要的东西
  4. 获取下载文件的输入流
  5. 创建缓冲区
  6. 获取OutputStream对象
  7. 将FileOutputStream流写入到buffer缓冲区
  8. 使用OutputStream将缓冲区中的数据输出到客户端!
    1. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    2. //1. 要获取下载文件的路径
    3. String realPath = "/Users/zhangwenjie/IdeaProjects/javaweb-02-servlet/response/src/main/resources/许嵩.jpg";
    4. System.out.println("下载文件的地址:"+realPath);
    5. //2. 下载的文件名是啥?
    6. String fileName = new File(realPath).getName();
    7. System.out.println("下载文件的名称:"+fileName);
    8. //3. 设置想办法让浏览器能够支持下载我们需要的东西,中文文件 名URLEncoder.encode编码,否则有可能乱码
    9. resp.setHeader("Content-disposition","attachment;filename="+ URLEncoder.encode(fileName,"UTF-8"));
    10. //4. 获取下载文件的输入流
    11. FileInputStream in = new FileInputStream(realPath);
    12. //5. 创建缓冲区
    13. int len = 0;
    14. byte[] buffer = new byte[1024];
    15. //6. 获取OutputStream对象
    16. ServletOutputStream out = resp.getOutputStream();
    17. //7. 将FileOutputStream流写入到buffer缓冲区,使用OutputStream将缓冲区中的数据输出到客户端!
    18. while((len = in.read(buffer))>0){
    19. out.write(buffer,0,len);
    20. }
    21. out.close();
    22. in.close();
    23. }