首页 > 编程语言 >JavaWeb基础

JavaWeb基础

时间:2023-09-18 19:44:09浏览次数:37  
标签:xml web JavaWeb 文件 基础 Accept maven Servlet

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
    注意:配置项目发布的路径就可以了

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

标签:xml,web,JavaWeb,文件,基础,Accept,maven,Servlet
From: https://www.cnblogs.com/LazyJay/p/17712895.html

相关文章

  • JAVA基础知识学习
    基础语法基础语法对象:对象(Object)是类的实例类:描述对象的属性和行为方法:封装了特定功能的代码块,可以在程序中被多次调用。方法是类的一部分,用于定义类的行为和功能实例变量:也称为成员变量或字段,是类中声明的变量,它们用于存储对象的状态或属性publicclassHelloMoke......
  • STM32基础(二)
    一、STM32F103C8T6开发板软件工具安装。1.安装Keil5MDK。(安装的Keil5MDK压缩包出来的部分文件和破解工具被[病毒和威胁实时保护删掉了导致不显示开发板型号])2.安装器件支持包。(安装对应型号)3.软件注册。(破解)4.安装STLINK驱动。5.安装USB转串口驱动。二、自己画板子,需了解封......
  • 【DSP视频教程】第11期:插补算法,曲线拟合丝滑顺畅,统计函数和基础函数加速实现,汇集SIMD,
    视频教程汇总帖:https://www.armbbs.cn/forum.php?mod=viewthread&tid=110519 DSP视频教程有段时间没有更新了。当前DSP库从CMSIS软件包里面独立出来,并且更新非常频繁,所以本期视频教程优先给大家简单介绍下新版DSP,然后为大家详细介绍了基础函数,统计函数和插补函数。其中基础函数里......
  • C++基础入门
    C++基础入门1C++初识1.1第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1创建项目​ VisualStudio是我们用来编写C++程序的主要工具,我们先将它打开1.1.2创建文件右键源文件,选择添加->新建项给C++文件起个名称,然后点击添......
  • springboot vue电子班牌系统源码,以云平台、云服务器为基础,融合课程管理、物联控制、
    随着时代进步,数字信息化不断发展,很多学校都开始了数字化的转变。智慧校园电子班牌系统是电子班牌集合信息化技术、物联网、智能化,电子班牌以云平台、云服务器为基础,融合了班级文化展示、课程管理、物联控制、教务管理、考勤管理、素质评价、资源管理、家校互联等一系列应用。实现了......
  • WPF MVVM 循序渐进 (从基础到高级):pdf
    简介简单的三层架构示例和GLUE(胶水)代码问题第一步:最简单的MVVM示例-把后台代码移到类中第二步:添加绑定-消灭后台代码第三步:添加执行动作和“INotifyPropertyChanged”接口第四步:在ViewModel中解耦执行动作第五步:利用PRISMWPFMVVM的视频演示…内容很精彩,转了一个p......
  • 基于javaweb远程教育网站开发与实现-计算机毕业设计源码+LW文档
    一、课题简介本课题将设计并实现一个基于JAVAWEB远程教育网站,根据课题的需求制定技术开发方案,可分别实现管理员与普通用户的注册、登录功能,可以实现客户端C++编程语言课程视频选取播放、学习进度记录、问答咨询论坛、在线测试等功能,实现服务端相关数据表的增删改查功能以及学生注......
  • k8s之docker基础+部署
    docker基础+部署1、docker基础概念1、统一标准应用构建程序打包dockerbuild...images应用分享镜像存放仓库dockerhub应用运行统一镜像dockerrun容器化2、资源隔离cpu、内存资源隔离网络隔离用户、用户组隔离...2、架构docker_host安......
  • Python基础教程08 - 面向对象的基本概念
    Python使用类(class)和对象(object),进行面向对象(object-orientedprogramming,简称OOP)的编程。面向对象的最主要目的是提高程序的重复使用性。我们这么早切入面向对象编程的原因是,Python的整个概念是基于对象的。了解OOP是进一步学习Python的关键。下面是对面向对象的一种理解,基于分......
  • kafka基础
    认识Kafaka最初的定义:消息队列系统0.10.0版本的定义:分布式流处理平台,发布-订阅消息队列,存储功能、流处理框架3.x后的定义:分布式流平台,数据管道/集成、流分析kafka的优势吞吐量高、性能好伸缩性好高容错、高可靠与大数据生态精密结合kafka的作用高并发环境下的缓冲、......