JavaWeb基础

JavaWeb基础

概念:Java Web,是用Java技术来解决相关web互联网领域的技术栈。

web分为静态web和动态web,静态web包括css和html这种,设定后就不会变了,动态简单理解就是数据会随时改变,比如淘宝,每个人在不同时间不同地点看到的信息是不一向的,对于java来讲,动态web资源开发技术就统称为javaweb。

tomcat详解

下载就不用说了,直接去官网下载就行

  • tomcat文件夹作用

    • bin文件里面是 启动 关闭的脚本文件(startup.bat就是启动文件,启动后就可以通过http://localhost:8080/ 进入)
    • conf文件里面是 配置文件
    • lib文件里面是依赖的jar包
    • logs里面是日志
    • webapps文件里面是存放网站的
  • tomcat配置文件详解

    下图这个文件就是写配置的

    其中可以改端口号(比如8080改成8081),修改相应的端口号是可以进入的

    但是直接改host中的name(或者说,这里就是更改主机名称),就不能进入

    详解:

    其实就是因为没有解析,在C:\Windows\System32\drivers\etc 这个路径下有个hosts文件

    在127.0.0.1 localhost这里看的出来localhost对应的是什么,新加一行127.0.0.1 xxx,xxx,xx(你想要的名字)就可以更改Host中的name了,这个 name就是你刚更改的名字

HTTP

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

端口号是80

超文本就包括图片,声音,视频,定位等

HTTPS是安全的,端口号是443

关于http请求

用访问百度举例,一次请求可以得到的信息总结如下

Request URL:https//www.baidu.com/        请求地址
Request Method: get/post                 包含gat方法和post方法 
status Code:200 0K                       状态码: 200
Remote (远程) Address:14.215.177.39 :443  地址
Accept:text/html
Accept-Encoding:gzip,deflate,br           编码方式
Accept-Language:zh-CN,zh;g=0.9               语言
Icache-Control:max-age=0
Connection :keep-aTive

请求行中的请求方式:GET

请求方式包括:Get,Post,HEAD,DELETE,PUT,TRACT等

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

消息头信息

Accept:告诉浏览器它所支持的数据类型
Accept-Encoding:支持的编码格式
Accept-Language:浏览器的语言环境
Icache-Control:缓存控制
Connection :连接状态,即是否还是保持连接
HOST:主机,,,

关于HTTP响应

一次服务器响应可以得到的信息总结如下

Cache-Control:private       缓存控制
Connection:Keep-ATive       连接
Content-Encoding:gzip       编码
Content-Type:text/html      类型

响应体

Accept:告诉浏览器它所支持的数据类型
Accept-Encoding:支持的编码格式
Accept-Language:浏览器的语言环境
Icache-Control:缓存控制
Connection :连接状态,即是否还是保持连接
HOST:主机,,,
Refresh: 告诉客户端,多久刷新一次;
Location; 让网页重新定位;

响应状态码

  • 200:响应成功
  • 3**:重定向
    • 重定向:到指定的新位置
  • 4xx::找不到资源
    • 404:资源不存在
  • 5xx:服务器代码错误
    • 502:网关错误

Maven

本体下载安装

(成功后在cmd中用MAVEN -version测试就行)

  • 官网下载zip文件
  • 解压后需要配置环境变量如下
    • M2_HOME(新建) MAVEN下的bin目录
    • MAVEN_HOME(新建) MAVEN的目录
    • PATH(系统自带) %MAVEN_HOME%\bin

配置阿里云镜像

镜像:mirros

作用:加速下载

建议:使用阿里云镜像,百度都有,设置在maven的conf文件夹的setting文件的mirros 配置中

<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/nexus/content/groups/public </url>
</mirror>

配置本地仓库

有本地仓库和远程仓库,我们需要建立一个本地仓库localRepository

maven的setting文件中,有注释掉的localRepository的相关配置,可以自己加地址,在maven的安装目录(bin同级的目录)下加一个maven-repo文件夹,然后把这个地址复制进去就行,如下

<localRepository>E:\environment\maven\apache-maven-3.9.4-bin\apache-maven-3.9.4\maven-repo</localRepository>

在IEDA中启动maven

  1. 首先单独创建一个maven项目(很简单就不演示了)

    创建成功后,要去setting中看一眼maven配置,是否和自己设置的一样或者设置其他的配置

  2. 点击右上角bug调试和运行嘴边的那个地方,创建tomcat

    创建成功后点击运行启动

IDEA中maven的POM文件相关

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

使用一个用模板创建的maven项目的pom.xml文件举例

<?xml version="1.0" encoding="UTF-8"?>
<!-- 下面的注释都是这个文件的重要组成部分 -->
<!-- Maven的版本和头文件 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <!--这里就是自己配置的GAV-->
  <groupId>com.axu</groupId>
  <artifactId>javaweb-01-maven</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--项目的打包方式-->
  <packaging>war</packaging>

  <name>javaweb-01-maven Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
  <!-- 配置 -->
  <properties>
    <!--项目的默认构建编码-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- 编码版本 -->
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  <!-- 项目依赖 -->
  <dependencies>
    <!-- 具体依赖的jar包配置文件 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
    <!-- 下面是自己百度的spring的东西 -->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.9.RELEASE</version>
    </dependency>

  </dependencies>
  <!-- 项目构建所需 -->
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>

</project>

但是使用模板有个问题是,约定大于配置,所以我们自己修改或者写的配置文件可能无法导出或者生效。

解决方案:配置resources 在pom中加入以下配置 (将上面的bulid中的东西替换,而且build中的文件本来就可以不要)

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

其他问题

如果不想每次建maven都要重新设置的话,就在File->New Projects Settings-> Settings for New Projects->Maven中设置一些通用设置,如图

Servlet

定义

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

把实现了Servlet接口的Java程序叫做,Servlet

新建项目需要注意的问题

也是建立maven项目,需要注意的事项和之前一样,但是maven项目自带的web.xml文件要更改,改成tomcat中的web.xml的内容(为了使tomcat一定运行起来)

更改前如下

更改后如下

将一些不必要的内容和注释删除之后,留下的如下

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">


</web-app>

一个很重要的点!!!!!!!!

如果新建项目没有iml文件的话,是会出问题的,用cmd进入当前项目的根目录,然后输入以下命令就可以有新的iml文件了

mvnidea:module

web.xml中的设置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
</web-app>

一个新的servlet项目的构建过程

  1. 构建一个普通的Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立Moudel; 这个空的工程就是Maven主工程,然后用模板再建立一个MAVEN项目,这个maven就是子工程的maven;
  2. 关于Maven父子工程的理解:
    父项目中会有
    <modules>
        <module>servlet-01</module>
    </modules>

​ 子项目中会有(没有的话可以手动添加)

  <parent>
    <groupId>com.axu</groupId>
    <artifactId>javaweb-03-servlet</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>

以上即java中的继承关系

  1. MAVEN环境优化

    1. 修改web.xml为最新的,如下
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0"
             metadata-complete="true">
    </web-app>
    
    1. 将maven结构搭建完整,即添加java文件夹和resources文化夹
  2. 开始编写一个servlet的class文件(重点就是继承HttpServlet接口)

    • 编写一个普通类

    • 继承HttpServlet接口

    • 重写doGet和doPost方法

      public class HelloServlet extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              //super.doGet(req, resp);
              PrintWriter writer = resp.getWriter();
              writer.println("Hello Servlet");
      
          }
      
          @Override
          protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              super.doPost(req, resp);
          }
      }
      
  3. 在web.xml中编写servlet映射

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

    所以完整的web.xml如下(url-pattern里面一定要加/

    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0"
             metadata-complete="true">
    
    
        <servlet>
            <servlet-name>Hello</servlet-name>
            <servlet-class>HelloServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>Hello</servlet-name>
            <url-pattern>/Hello</url-pattern>
        </servlet-mapping>
    </web-app>
    

    以下是解析版本

    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                          http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0"
             metadata-complete="true">
        <!--web.xml是配置web的核心应用-->
        <!--注册servlet-->
        <servlet>
            <servlet-name>HelloServlet</servlet-name>
            <!--servlet-class是对应的class类-->
            <servlet-class>com.axu.servlet.HelloServlet</servlet-class>
        </servlet>
        <!--一个servlet对应一个映射。即mapping-->
        <servlet-mapping>
            <servlet-name>HelloServlet</servlet-name>
            <!--下面这个是访问路径-->
            <url-pattern>/axu</url-pattern>
        </servlet-mapping>
    
    
    </web-app>
    
  4. 配置Tomcat
    注意:配置项目发布的路径就可以了

以上配置结束后就可以测试了

posted @   啃兔子的大萝卜  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示