JavaWeb

JavaWeb

Java 和 Web

基本概念

Web开发

  • 静态Web
    • HTML,CSS,一些模板引擎
    • 提供给所有人看的数据始终不会发生变化
  • 动态Web
    • 提供给所有人看的数据在不同时间不同地点会发生变化
    • 技术栈:Servlet、JSP、ASP、PHP

在java中,动态Web资源开发的技术统称为JavaWeb

Web应用程序

可以提供浏览器访问的程序

  • a.html、b.html…多个Web资源可以被外部访问,对外界提供服务
  • 能访问到的任何页面或资源都存在于世界某个角落的计算机上
  • URL:统一资源定位符
  • 这些统一的Web资源会被放在同一个文件夹下,是一个Web应用程序,依赖于Tomcat服务器
  • 一个Web应用由多部份组成(静态Web,动态Web)
    • html、css、js
    • jsp、servlet
    • java程序
    • jar包
    • 配置文件(Properties)

Web应用程序编写完后若想提供给外界访问,需要服务器来统一管理

静态Web

*.htm, *html都是网页的后缀,如果服务器上一直存在这些东西,我们就可以进行读取

静态Web的缺点:

  • Web无法动态更新,所有用户看到的都是同一个页面

    • 伪动态:轮播图,点击特效;JavaScript、VB
  • 无法和数据库交互(数据无法持久化,用户无法交互)

动态Web

页面会动态展示:Web的页面展示的效果因人而异

动态Web的缺点:

  • 若服务器的动态Web资源出现错误,我们需要重新编写后台程序,重新发布
    • 停机维护

动态Web的优点:

  • 可以动态更新,所有用户看到的页面都不同
  • 可以和数据库交互,数据持久化,用户交互

Web服务器

###技术讲解

ASP(微软)

  • 在HTML中嵌入了VB脚本:ASP+COM
  • ASP开发中,一个基本页面都有几千行业务逻辑代码,页面混乱,维护成本高
  • 主要用C#

PHP

  • PHP开发速度很快并且能跨平台
  • 代码简单
  • 无法承载大访问量的情况存在局限性

JSP/Servlet

  • sun公司主推的B/S(浏览器和服务器)架构
  • 基于java语言,所有互联网大公司或开源组件都是用java
  • 可以承载高并发,高可用,高性能带来的影响
  • 语法和ASP很像,加强市场强度

Web服务器

用以接受用户请求并作出响应,是一种被动操作

IIS(微软)

  • 运行Windows中自带的

Tomcat

  • 实际运行JSP页面和Servlet,同时具有处理HTML页面的功能

Tomcat

文件夹作用:

  • bin:启动关闭
  • conf:配置
  • lib:依赖的jar包
  • logs:日志
  • webapps:发放、存放网站

Tomcat配置:

  • conf/server.xml:服务器核心配置文件

可以配置启动的端口号

Tomcat的默认端口号为8080

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

配置主机名称

默认主机名为localhost

默认网站存放位置为:webapps文件夹

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

网站是如何访问的

  1. 输入域名;回车
  2. 检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有无该域名映射
    • 有:直接返回对应的IP地址,这个地址中有我们需要的Web程序,可以直接访问
    • 无:访问DNS服务器(全世界的域名都在这管理),找到的话就返回,找不到就返回报错

##发布一个Web网站

  1. 将自己写的网站放到服务器(Tomcat)中指定的Web文件夹(webapps)下,就可以访问了

    --webapps:Tomcat服务器的web目录
        -ROOT
        -Mood:网站的目录名
        	-WEB-INF
            	-classes:Java程序
                -lib:所依赖的jar包
                -web.xml
            -index.html默认的首页  
            -static
                -css
                    -style
                -js
                -img
    
  2. 运行Tomcat后,进入localhost:8080/examples/,是Tomcat的帮助文档,包括例子和源码

HTTP

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。

  • 文本:html,字符串
  • 超文本:图片,音乐,视频,定位,地图
  • 默认端口:80
  • https默认端口:443

HTTP1.0和HTTP1.1

  • HTTP/1.0

    • 客户端可以与Web服务器连接后,只能获得一个Web资源,断开连接
  • HTTP/1.1

    • 客户端能获得多个Web资源

HTTP请求

  • 客户端–>发送请求–>服务器
Request URL: https://www.baidu.com/ //请求地址
Request Method: GET  //get方法,post方法
Status Code: 200 OK  //状态码
Remote Address: 180.101.49.12:443
Referrer Policy: unsafe-url
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9 语言设置
Cache-Control: max-age=0
Connection: keep-alive  连接
Cookie: BIDUPSID=ADFED4B46EAF1CE35D93B98A4D5666B8; PSTM=1643428279; BD_UPN=1a314753; __yjs_duid=1_d3176cee17b43831f3f57fa275a202ce1644024632379; BDUSS=TBoeHRwQlNxRlRxNFJTejZEZDRRQWNxdzhjM0pUc3NXfk55ZFBzRmdZY0hjR0ppSVFBQUFBJCQAAAAAAAAAAAEAAADU~4VuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfjOmIH4zpia; BDUSS_BFESS=TBoeHRwQlNxRlRxNFJTejZEZDRRQWNxdzhjM0pUc3NXfk55ZFBzRmdZY0hjR0ppSVFBQUFBJCQAAAAAAAAAAAEAAADU~4VuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfjOmIH4zpia; MCITY=-358%3A; BAIDUID=2F12F92FAB2B9824DB6D4A4A0B3A20A6:FG=1; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; BAIDUID_BFESS=C3900F6047AC5F5DC70BFA5CD902BADE:FG=1; BA_HECTOR=20810l8ha08g8g0l8h2n4pep1hdev6917; ZFY=iRi57ZGgh6FcQUUEd8eY12EIxWtbIgZ3cGQkHTScRVg:C; BDRCVFR[S_ukKV6dOkf]=mk3SLVN4HKm; delPer=0; BD_CK_SAM=1; PSINO=5; B64_BOT=1; Hm_lpvt_aec699bb6442ba076c8981c6dc490771=1658298229; Hm_lvt_aec699bb6442ba076c8981c6dc490771=1658113641,1658192739,1658280031,1658298229; COOKIE_SESSION=414_0_9_9_9_15_1_0_8_8_12_6_179_0_4_0_1658298645_0_1658298641%7C9%23282_16_1658121372%7C9; H_PS_PSSID=36554_36465_36255_36820_36454_36414_36666_34812_36692_36167_36773_36746_36762_36770_36767_26350_36866; ab_sr=1.0.1_ZmUwMzE5OWI4NTA3ZTQ1N2Q1ZGFjYTZjODE0YjYzZmU4MGM1OGNiNTIzNzE3Y2JiZGJmYjViMmRhZmE3OTZmNzdjNDU2NTY4NTI0YWFhOGIxYzIxNWY5MDc1MmM1NjY5YTg2OWMyNzBjNDQzODliODE2MzM2ODE1YWMwNmJjZmQ1NzFhODJkNWU4ODA4YTVlOWMyNDdkM2I3OTM3NGE4MTQ0ZGY4ZmExMzUxNWVmZWYwMTNkNjg1ZGJmOGZiZGUw; RT="z=1&dm=baidu.com&si=dj81265r9d6&ss=l5tajwbz&sl=3&tt=55y&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=4u7"; H_PS_645EC=d366EWv5yJooBEL3yAfUzpIYqa7OsvpJklUE2HcywihMpljd5P37Swvqy2AyF%2BwHwqk; __sec_t_key=bfba2f1a-e928-4a8c-83d3-c14584574619; baikeVisitId=df1c99a6-c50f-4b77-a77f-a054a863e3d5; BD_HOME=1; sugstore=0
Host: www.baidu.com  主机
Referer: https://www.baidu.com/link?url=nqJ_i8_gcwjCRj2UA3SBx6EsbNDCP33atEhPMpwKAhO&wd=&eqid=c13e42ff000438a50000000462d7b29f
sec-ch-ua: ";Not A Brand";v="99", "Chromium";v="94"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.169.400 QQBrowser/11.0.5130.400

####请求行

  • 请求方式:get,post…
    • get:一次请求能够携带的参数比较少,有大小限制,会在浏览器的URL地址栏显示数据内容,不安全但高效
    • post:请求能携带的参数无限制,大小无限制,不会在浏览器的URL地址栏显示参数,安全但不高效
消息头
Accept:告诉浏览器所支持的数据类型
Accept-Encoding:支持那种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器语言环境
Cache-Control:缓存控制
Connection:告诉浏览器请求完成是保持连结还是断开
HOST:主机

HTTP响应

  • 服务器–>响应–>客户端
Bdpagetype: 2
Bdqid: 0xe9d76ff80000eae7
Cache-Control: private  //缓存控制
Connection: keep-alive  //连接:保持链接
Content-Encoding: gzip  //编码类型
Content-Type: text/html;charset=utf-8
Date: Wed, 20 Jul 2022 07:45:54 GMT
Expires: Wed, 20 Jul 2022 07:45:53 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=304; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=36554_36465_36255_36820_36454_36414_36666_34812_36692_36167_36773_36746_36762_36770_36767_26350_36866; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1658303154064668877816850059641772632807
Transfer-Encoding: chunked
X-Frame-Options: sameorigin
X-Ua-Compatible: IE=Edge,chrome=1
响应体
Accept:告诉浏览器所支持的数据类型
Accept-Encoding:支持那种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器语言环境
Cache-Control:缓存控制
Connection:告诉浏览器请求完成是保持连结还是断开
HOST:主机
Refresh:告诉客户端多久刷新
Location:让网页重写

####响应状态码

状态码说明详情
100继续请求者应当继续提出请求。服务器已经收到请求的一部分,正在等待其余部分
101切换协议请求者已要求服务器切换协议,服务器已确认并准备切换
200成功服务器已成功处理了请求
201已创建请求成功并且服务器创建了新的资源
202已接受服务器已接受请求,但尚未处理
203非授权信息服务器已成功处理了请求,但返回的信息可能来自另一个源
204无内容服务器成功处理了请求,但没有返回任何内容
205重置内容服务器成功处理了请求,内容被重置
206部分内容服务器成功处理了部分请求
300多种选择针对请求,服务器可执行多种操作
301永久移动请求的网页已永久移动到新位置,即永久重定向
302临时移动请求的网页暂时跳转到其他页面,即暂时重定向
303查看其它位置如果原来的请求时POST,重定向目标文档应该通过GET提取
304未修改此次请求返回的网页未修改,继续使用上次的资源
305使用代理请求者应该使用代理访问该网页
307临时重定向请求的资源临时从其他位置响应
400错误请求服务器无法解析该请求
401未授权请求没有进行身份验证或验证未通过
403禁止访问服务器拒绝此请求
404未找到服务器找不到请求的网页
405方法禁用服务器禁用了请求中指定的方法
406不接受无法使请求的内容响应请求的网页
407需要代理授权请求者需要使用代理授权
408请求超时服务器请求超时
409冲突服务器在完成请求时发生冲突
410已删除请求的资源已永久删除
411需要有效长度服务器不接受不含有效内容长度标头字段的请求
412未满足前提条件服务器未满足请求者在请求中设置的其中一个前提条件
413请求实体过大请求实体过大,超出服务器的处理能力
414请求URL过长请求网址过长,服务器无法处理
415不支持类型请求格式不被请求页面支持
416请求范围不符页面无法提供请求的范围
417未满足期望值服务器未满足期望请求标头字段的要求
500服务器内部错误服务器遇到错误,无法完成请求
501未实现服务器不具备完成请求的功能
502错误网关服务器作为网关或代理,从上游服务器收到无效响应
503服务不可用服务器目前无法使用
504网关超时服务器作为网关或代理,但是没有及时从上游服务器收到请求
505HTTP版本不支持服务器不支持请求中所有的HTTP协议版本

重定向:重新到所给的新位置

Maven

使用Maven帮我们自动导入大量jar包

Maven项目架构管理

Maven核心思想:约定大于配置

Maven会规定你该如何去编写Java代码

测试Maven是否安装成功:cmd中输入mvn -version

###阿里云镜像

搜索阿里云镜像代码,粘贴进settings.xml文件的mirror中

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

本地仓库

在settings.xml文件中填入自己的地址:…

在IDEA中创建MavenWeb项目时可以勾选archetype选项,可以使用Maven的模板

环境变量

在高级系统设置的环境变量中加入:

M2_HOME:maven的bin目录

MAVEN_HOME:maven的目录

Path中新建引用:%MAVEN_HOME%\bin

IDEA中的Maven设置

SpringBoot中在Maven创建完成后,MavenHome可能会使用默认设置,我们需要手动改为本地

如果选择archetype选项,并选择其中的maven.webapp选项为模板

则在main文件夹中会出现wabapp文件夹
在这里插入图片描述
其中就是一个网站程序:WEB-INF中的web.xml属于Web配置,index.jsp是网页

这些只有在Web应用下才存在

如果不选择archetype选项,则如下所示
在这里插入图片描述
main中的java文件夹存放java源代码

resources放置配置文件

test文件夹中的java用来测试使用

右侧为初始的Maven文件

IDEA中配置Tomcat

在这里插入图片描述

找到并选择Tomcat,选择本地仓库

完成配置
在这里插入图片描述

解决警告

必须配置:为访问网站,需要制定一个文件夹的名字
在这里插入图片描述

在这里插入图片描述

点击确定后在右上方启动Tomcat

启动完成后得到网页显示如下
在这里插入图片描述

这里访问到的Hello World!就是根据默认的index.jsp中的内容

在这里插入图片描述

pom文件

pom.xml是Maven的核心文件

<?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>org.example</groupId>
  <artifactId>MavenWeb</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--项目的打包方式
  jar:java应用
  war:JavaWeb应用-->
  <packaging>war</packaging>

  <name>MavenWeb 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>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!--项目构建用的东西-->
  <build>
    <finalName>MavenWeb</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

导入Spring Web MVC包

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>org.example</groupId>
    <artifactId>JavaWeb-02-Maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

    <dependencies>
        <!--具体以来的jar包配置文件-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!--Maven的高级之处在于,他会帮你导入这个JAR包依赖的其他JAR包  -->
        <!--https://mvnrepository.com/artifact/org.springframework/spring-webmvc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.22</version>
        </dependency>
    </dependencies>

</project>

导入包如下:junit包和Spring Web MVC包
在这里插入图片描述

由于在Maven中规定大于配置,我们之后可能会遇到自己写入的配置文件无法被导出或生效的问题

解决方案:在build下配置resource节点

<build>
      <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/*.properties</exclude>
                <exclude>**/*.xml</exclude>
             </excludes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes><!--让src/main/java这个目录下能包含xml文件-->
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

IDEA操作

生成结构树
在这里插入图片描述

问题

由于依照archetype选项中的Web模板生成的Web版本较低,可以引入Tomcat的Web.xml文件中的Web版本进行替换,使Web版本和Tomcat保持一致

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
  version="5.0"
  metadata-complete="true">

</web-app>

Maven仓库的使用

如果本地的仓库中找不到Maven需要的类,就进入Maven仓库中寻找

在这里插入图片描述
在这里插入图片描述

观察使用人次等判断使用

如此时出现添加Maven依赖失败的问题,直接从Maven仓库中找到相关依赖的jar包进行导入

在这里插入图片描述

Servlet

Servlet是sun公司开发的一门动态Web的技术

Sun在这些API中提供一个接口叫做Servlet,开发一个Servlet程序只需要两步骤,编写一个类,实现Servlet接口,把开发好的Java类部署到Web服务器中

把实现了Servlet接口的Java程序称作Servlet

HelloServlet

构建一个普通的Maven项目,删掉里面的所有东西,在这个项目里建Moudel,此空的工程就是Maven主工程

关于Maven父子项目的理解:

父项目中会有

<modules>
    <module>Servlet-01</module>
</modules>

子项目中会有

<parent>
    <artifactId>JavaWeb-03-Servlet</artifactId>
    <groupId>com.mood</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

父项目中的jar包子项目可以直接使用

son extends father

package com.mood.servlet;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
        System.out.println("进入doGet方法");
        //ServletOutputStream outputStream = resp.getOutputStream();
        PrintWriter writer = resp.getWriter();//响应流
        
        writer.print("Hello,Servlet");
    }

    @Override
    protected void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
        doGet(req,resp);
    }

}

###编写Servlet的映射:

我们编写的是Java程序,但需要通过浏览器访问,而连接浏览器需要连结Web服务,所以我们需要在Web服务中注册我们写的Servlet,还需要给他一个浏览器能够访问的路径;

<!--注册Servlet-->
<servlet>
  <servlet-name>hello</servlet-name>
  <servlet-class>com.mood.servlet.HelloServlet</servlet-class>
</servlet>
<!--Servlet请求路径-->
<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>/hello</url-pattern>
</servlet-mapping>

###配置Tomcat

注意发布时的Artifact项目配置

如若未出现Artifact选项,可能为Maven导入的jar包未更新,重新更新Maven的jar包目录即可

启动测试

点击启动Tomcat,输入先前配置的Servlet请求路径即可访问用Servlet编写的页面

Servlet运行原理

Servlet程序由Web服务器调用,Web服务器在收到浏览器请求之后,会:

在这里插入图片描述

Mapping

###一个Servlet可以指定一个映射路径

<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>/hello</url-pattern>
</servlet-mapping>

###一个Servlet可以指定多个映射路径

<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>/hello1</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>/hello3</url-pattern>
</servlet-mapping>

###一个Servlet可以指定通用映射路径

<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>/hello/*</url-pattern><!--此处使用通配符,表示hello后的任何都会指向hello-->
</servlet-mapping>

###默认请求路径

<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>/*</url-pattern><!--此处使用通配符,表示任何都会指向hello-->
</servlet-mapping>

###指定后缀或者一些前缀

<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>*.mood</url-pattern><!--此处使用通配符,表示任意前缀如abcd.mood,*前不能加映射路径-->
</servlet-mapping>

###优先级问题

制定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求

免责声明:本问主要借鉴B站up主遇见狂神说的教学视频,本文属个人笔记,无商业用途

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JavaWeb demo 是一个简单的 JavaWeb 应用程序示例。它主要用于展示如何创建一个简单的动态网站,并介绍了一些常用的 JavaWeb 技术。 这个 demo 可能包含以下几个方面的内容: 1. 前端页面:demo 可能包含多个静态 HTML 页面,通过 CSS 和 JavaScript 来实现页面的样式和交互效果。这些页面可能包含表单、按钮、导航栏等常见的网页组件。 2. 后端处理:demo 可能使用 Java Servlet 来处理前端页面的请求。Servlet 是 JavaWeb 开发中的一种常用技术,通过它可以接收和处理 HTTP 请求,并生成对应的响应。在 demo 中,Servlet 可能会读取表单数据、调用业务逻辑处理模块,并将处理结果返回给前端页面。 3. 数据库连接:demo 可能会使用 Java 中的数据库连接技术,如 JDBC,来与后端数据库进行交互。通过 JDBC,demo 可能会连接到数据库、执行 SQL 查询和更新操作,以及处理数据库返回的结果。 4. 业务逻辑:demo 可能会展示一些简单的业务逻辑,如用户注册、登录等。在这些功能中,demo 可能会将用户的输入数据存储到数据库中,或者验证用户的登录信息。 通过这个示例,开发者可以了解到如何搭建一个简单的 JavaWeb 应用程序,并了解到如何使用常见的 JavaWeb 技术来实现各种功能。这个 demo 还可以作为 JavaWeb 开发的一个入门教程,帮助开发者迅速上手和理解如何构建一个简单的动态网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值