javaweb-Maven+Servlet简单应用

目录

Maven架构管理工具

下载安装Maven

配置环境变量 

 a'la'li阿里云镜像配置

本地仓库

创建Maven项目(勾选模板)

 main下创建并修改java、resources文件格式(新版格式会自动转化)

进入Project Structure

创建普通Maven项目

 在IDEA中配置Tomcat

​  pom.xml文件

Servlet

创建maven项目HelloServlet

Servlet原理

Mapping问题 


Maven架构管理工具

方便导入jar包

Maven核心思想约定大于配置(Maven规定号如何编写java代码,必须要按照这个规定)

下载安装Maven

官网:https://maven.apache.org/

下载完成后解压

配置环境变量 

配置:

  • M2_HOME   maven 目录下的bin目录

  •  MAVEN_HOME maven的目录

  • 在系统的path中配置%MAVEN_HOME%\bin(%表示引入MAVEN_HOME)

测试Maven是否安装成功   mvn -version

 a'la'li阿里云镜像配置

        镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。可以把许多文件做成一个镜像文件,与GHOST等程序放在一个盘里用GHOST等软件打开后,又恢复成许多文件,RAID 1和RAID 10使用的就是镜像。常见的镜像文件格式有ISO、BIN、IMG、TAO、DAO、CIF、FCD。

        作用:加速下载

        国内建议使用阿里云的镜像


      <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> 

本地仓库

建立一个本地仓库:localRepository

在maven解压包下创建自己的本地仓库maven-repo

 复制地址D:\Maven\apache-maven-3.8.1\maven-repo到conf/settings.xml配置中引入本地仓库

 在IDEA中使用Maven

创建Maven项目(勾选模板)

1,启动IDEA创建Maven项目(勾选模板)

 等待项目初始化

显示BUILD SUCCESS说明创建成功

 创建成功后检查Maven配置

 只有在勾选了web应用下有,普通不勾选没有

 main下创建并修改java、resources文件格式(新版格式会自动转化)

修改格式方式1:

 修改格式方式2:

进入Project Structure→Modules→main,需要改变哪个文件夹点击哪个,然后点击上面的Mark as改变

进入Project Structure

1

 2

3.Ctrl+Alt+Shift+S 

创建普通Maven项目

 

 在IDEA中配置Tomcat

 

解决警告问题

Warning:No artifacts marked for development(访问一个网站需要指定一个文件夹名字)

  pom.xml文件

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

 

maven由于它的约定大于配置,我们之后可能遇到,写的配置文件无法被导出或者生效的问题,解决方案:

<!--在build中配置resources,来防止我们资源导出失败的问题-->
    <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>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

Servlet

servlet介绍:

  • Servlet是sun公司开发动态web的一门技术
  • sun公司在这些API中提供一个接口叫:Servlet
  • 开发servlet程序:1.编写类实现接口servlet2.把开发好的类部署到web服务器中

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

创建maven项目HelloServlet

Servlet在sun公司有两个默认的实现类:HttpServlet,GenericServlet

1.构建一个普通的maven项目,删除src,这个空的工程就是maven主工程

2.关于maven父子工程的理解:

        父项目中会有

    <modules>
        <module>servlet-01</module>
    </modules>

子项目中会有

   <parent>
        <artifactId>HelloServlet</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

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

3.Maven环境优化

        修改web.xml为最新的

        将maven的结构搭建完整

4.编写一个Servlet程序

        编写一个普通类,

public class HelloServlet extends HttpServlet {
    //由于get/post只是请求实现的不同方式,可以相互调用,业务逻辑都一样
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("我妹最漂亮");
        PrintWriter writer = resp.getWriter();//响应流
        writer.print("HelloServlet");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

如果没有勾选webapp,进行如下操作:

右键点击需要加入webapp的项目→选择Add Framework Support

 进入后选择Web Application→ok

 

 

        实现Servlet接口,这里直接继承HttpServlet

public class HelloServlet extends HttpServlet {
    //由于get/post只是请求实现的不同方式,可以相互调用,业务逻辑都一样
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();//响应流
        writer.print("我妹最漂亮");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

 5,编写Servlet映射

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

在web.xml中注册和配映射servlet

<!--    注册servlet-->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.yl520.servlet.HelloServlet</servlet-class>
    </servlet>
<!--    servlet映射路径-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>hello</url-pattern>
    </servlet-mapping>
</web-app>

6.配置tomcat

7,启动测试

1. 如果出现乱码,在tomcat文件conf→logging.properties中将下面一行UTF-8改为GBK即可。

java.util.logging.ConsoleHandler.encoding = UTF-8改为GBK

2,没有target文件夹

可能是没有勾选显示,如下勾选后就可以显示了。

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>/hello</url-pattern>
    </servlet-mapping>
    <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可以指定通用映射路径

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

 默认映射路径

<!--    默认请求路径(不进入index.jsp,直接进入写的HelloServlet页面)-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

指定一些后缀或前缀...

    <!--可以自定义后缀实现请求映射
注意点:*前面不能加项目映射的路径
1314.yl520-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>*.yl520</url-pattern>
    </servlet-mapping>

Error

public class ErrorServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        PrintWriter writer = resp.getWriter();
        writer.print("<h1>404<h1>");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}
    <!--    404-->
    <servlet>
        <servlet-name>error</servlet-name>
        <servlet-class>com.yl520.servlet.ErrorServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>error</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

优先级问题

指定了固有的映射路径,优先级最高,找不到就会走默认的映射路径

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值