javaWeb

在这里插入图片描述
1.什么是javaweb

在java中,动态web资源开发的技术,称为javaWeb。
Web应用组成(静态、动态)

  • html、css、js
  • jsp、servlet
  • java程序
  • 外部依赖包.jar
  • 配置文件

Web应用程序完成后,需要由服务器统一管理,才可以被外界访问。

2.tomcat服务器

参考博客:tomcat的下载配置

端口(下面的Connector最后的"/“和”>"之间不能有空格,否则项目和tomcat都无法启动
在这里插入图片描述

主机
在这里插入图片描述
如果想把主机换成www.xxxx.com,这样去浏览器是无法访问的。
hosts文件中,对localhost做了映射:
在这里插入图片描述
如果给www.xxxx.com也映射到127.0.0.1,那么就可以通过www.xxxx.com访问了。

在这里插入图片描述
这是因为网站的访问方式为:
在这里插入图片描述

在这里插入图片描述

tomcat启动文件和关闭文件。如果在项目中已经运行了tomcat,那么这里的启动文件就不能成功启动了。

在这里插入图片描述
tomcat默认主页

index.jsp:可以修改这个文件从而修改默认页面。
在这里插入图片描述
web项目部署到tomcat服务器

项目部署到服务器,即web项目要放在webapps文件中,这样就可访问这些资源文件。

  • war包:javaweb应用程序;
  • jar包:java应用程序;

在这里插入图片描述
通过http://localhost:8080/项目名/进行访问(tomcat默认端口8080,主机localhost)
通过http://localhost:8080/项目名/项目中的具体资源进行访问

注意:必须先将项目运行起来,然后保证访问的文件在webapps/项目下面存在。访问没有运行的项目中的文件,肯定无法访问到。

例如:访问JDBCTest_war包下面的index.jsp

在这里插入图片描述
jsp内容如下:
在这里插入图片描述
可以通过http://localhost:8080/JDBCTest_war/

在这里插入图片描述
或者http://localhost:8080/JDBCTest_war/index.jsp

在这里插入图片描述
总之,每个项目默认会进入该项目的index.jsp页面。

这里的JDBCTest_war是什么?怎么来的?
在这里插入图片描述
有的项目是分模块的,有的是多项目的。选择你想要运行的项目或模块,此时Application Context(项目上下文/虚拟路径)会自动配置为当前项目或模块的名称。点击apply再运行tomcat就会在localhost:8080/拼接这个项目上下文路径。然后默认打开选中的该项目或模块的index.jsp文件。

web项目的项目结构

javaWeb的项目网站结构

webapps目录下可以有如下的结构:

所有依赖包最后都会被打包到webapps下面的lib目录;

如果是前后端分离的话,将前端打包的文件放在static下面,和springboot基本相同,确定static的位置即可。
在这里插入图片描述
此外,还可以对服务器加密,访问项目地址时需要输入用户名和密码,了解即可,一般用不到。

在这里插入图片描述

在这里插入图片描述

3.http
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
4.maven

参考博客:maven下载及相关配置

在这里插入图片描述
注意:下载maven的时候

  • tar.gz表示linux系统使用;
  • zip表示windows使用;
  • binary表示工具;
  • source表示源码;

maven配置文件

在这里插入图片描述
镜像配置(可以配置多个)

在这里插入图片描述
配置本地仓库的位置:后面pom.xml中下载的依赖包,都会在这个文件夹下。

在这里插入图片描述
配置maven默认的jdk版本:

在这里插入图片描述

5.IDEA中maven的使用

创建maven项目

在这里插入图片描述
Maven GAV:
G:组,一般为公司域名倒置;
A:项目名;
V:版本;

在这里插入图片描述
选择maven的地址、本地仓库、配置文件:

在这里插入图片描述
接下来点击finish即可。
然后maven会帮我们导入需要的依赖包,此时IDEA会提示自动导入包,需要手动点击ENable。
在这里插入图片描述
等导入完成,可以去本地maven仓库看一下,已经存在了非常多的依赖包。

在这里插入图片描述

项目创建完成后,需要查看IDEA中的maven配置是否正确,比如maven地址、maven配置文件、本地仓库的位置是否正确:

在这里插入图片描述
自动导入源码、文档:默认不勾选
在这里插入图片描述

JRE版本

在这里插入图片描述
注意点:

如果创建项目的时候,没有使用maven的模板,此时项目中是没有webapp文件夹的。可以右键项目名称,添加web支持。

在这里插入图片描述
在这里插入图片描述
如果创建的文件夹是灰色的,可以手动添加标记:
在这里插入图片描述
或者在项目结构的module模块进行标记也是一样的。
在这里插入图片描述
target为项目输出目录。

在IDEA中添加tomcat

使用本地的tomcat

在这里插入图片描述
tomcat的设置

在这里插入图片描述
这个警告问题必须解决,方法就是添加当前的项目:

在这里插入图片描述
添加一个项目后,警告就消失了。此时上下文路径Application Context(虚拟路径映射)可以配置,也可以不配置:

在这里插入图片描述
tomcat启动成功后,会自动在项目中生成target文件,target文件夹下会有一个lib目录,里面是所有项目导入的依赖包。
在这里插入图片描述

IDEA侧边栏

在这里插入图片描述
此外,为了避免每次 创建项目时,都需要重新选择maven的地址、本地仓库、配置文件等,需要在创建新项目的页面全局设置maven

在这里插入图片描述

6.pom.xml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.第一个servlet程序

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

(1)javaweb的servlet需要导入两个依赖包:

  <dependencies>
  
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        
    </dependencies>

(2)写一个类HelloServlet实现servlet接口,重写doGet和doPost方法(HttpServlet 实现了servlet接口,所以继承HttpServlet这个类也就间接实现了servlet接口)


public class HelloServlet extends HttpServlet {
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        resp.setContentType("text/html"); 
        resp.setCharacterEncoding("utf-8"); //防止向浏览器输出时中文乱码
        
        PrintWriter writer = resp.getWriter();  //响应流
        writer.print("hello,韩英俊");
    }

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

(3)web.xml配置文件注册HelloServlet
HelloServlet起一个名字hello,再把hello映射到请求路径/hello
这样再浏览器中访问这个请求路径时,就会执行HelloServlet的程序,输出一个响应。

<?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">
    
        <servlet>
            <servlet-name>hello</servlet-name>
            <servlet-class>com.han.servlet.HelloServlet</servlet-class>
        </servlet>
  
       <servlet-mapping>
            <servlet-name>hello</servlet-name>
            <url-pattern>/hello</url-pattern>
        </servlet-mapping>

</web-app>

这里设置的项目虚拟路径为Servlet_01

在这里插入图片描述

运行项目,在浏览器访问localhost:8080/Servlet_01/hello

在这里插入图片描述
这次请求成功响应

   PrintWriter writer = resp.getWriter();  //响应流
   writer.print("hello,韩英俊");

7.servlet的路径映射问题

  <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.han.servlet.HelloServlet</servlet-class>
   </servlet>

(1)一个servlet请求指定一个固定的路径映射

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

(2)一个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>
    
    ......  //每一个路径都是走HelloServlet请求
    

(3)一个servlet请求指定通用路径映射

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

此时访问项目
localhost:8080/项目虚拟映射路径/hello/ytge
localhost:8080/项目虚拟映射路径/hello/tweuy
localhost:8080/项目虚拟映射路径/hello/fgtweq
也就是*的位置可以为任意,甚至为空。

(4)默认请求路径

如果此时路径直接为/*

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

这个请求localhost:8080/项目虚拟映射路径/会进入/*的请求,而不是进入默认的index.jsp页面。

(5)指定后缀的请求路径

   <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>*.study</url-pattern>
    </servlet-mapping>

这里指定了一个后缀.study
满足
localhost:8080/项目虚拟映射路径/xxxx.study
localhost:8080/项目虚拟映射路径/xxxx/xxxx.study
的路径都能够请求成功。

注意:如果这里为
<url-pattern>/*.study</url-pattern>
或者<url-pattern>/xxxx/*.study</url-pattern>
运行会直接失败,即不能在前面加上项目映射路径

(6)路径优先级

指定了路径映射的请求优先级较高,如果该映射存在,就会执行对应的servlet请求和响应。通配符的优先级较低。假设映射路径不存在,就会走通配符的请求。

 <servlet>
        <servlet-name>error</servlet-name>
        <servlet-class>com.han.servlet.ErrorServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>error</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

8.servletContext对象

(1&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值