• 第二章 Maven 构建 Java Web项目


    本教程中,我们将教给大家如何创建一个基于Spring MVC 的 Maven Web Project。

    用到的技术/工具:

    1、Eclipse 4.9

    2、Maven 3.6.2

    3、Tomcat 8.5.34

    4、JDK 1.8

    5、Spring 4.3.14.RELEASE

    2.1   新建Maven Project

    打开Eclipse IDE,新建Maven Project,步骤:File->Project->Maven->Maven Project

    在此不要勾选“Create a simple project(skip archetype selection)”,勾选了将会跳过模板选择,框架结构就需要自己手动去建了,不要勾选。接下来选择一下项目工程的路径

    我们给项目命名“maven_webapp”,如果这个目录不存在,可以自己创建一个,选择这个文件目录

    选择模板“maven-archetype-webapp”:

     

    配置:Group Id一般指项目所属的组织机构,Artifact Id指项目名称,Package会根据前面的两项自动生成,接着下一步完成,一个Maven的Web项目就创建完毕了。

    创建完成后,可以看一下项目的目录结构:

    上图发现了两个问题:

    1、  项目目录出现了错误红叉

    2、  而且目录结构缺少java和test的结构目录

    原因:打开index.jsp文件后,鼠标移到左边的红叉上,提示没有找到javax.servlet.http.HttpServlet ,这是没有Java Build Path 中没有引入Tomcat Server的原因。

    2.2    添加Tomcat Server

    两种方式:

    1、右键->项目名称->Build Path->Configure Build Path->Java Build Path

    2、菜单:Project->Properties->Java Build Path

    Libraries中并没有Tomcat,所以需要“Add Library...”来添加

     

     

    现在Libraries中已经添加了Tomcat。再来看一下项目的结构目录中不但红叉的错误消失了,而且增加了java和test的结构目录,让项目结构完整了。

    2.3    配置pom.xml

    引入依赖包:spring-web、spring-webmvc、commons-logging、servlet、jsp.jstl、taglibs

    <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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.gg</groupId>
      <artifactId>maven_webapp</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>maven_webapp Maven Webapp</name>
      <url>http://maven.apache.org</url>
      
      <!-- 公共属性,方便控制,可通过类似于表达式EL一样引用  -->
      <properties>
        <spring.version>4.3.14.RELEASE</spring.version>
      </properties>
      
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        
        <!-- 搭建Springmvc框架只需要引用spring-web,spring-webmvc两个包即可Maven会自动引用他们的依赖包 -->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <!-- Maven中通过类似与EL表达式一样可以引用上方配置公共属性 -->
            <version>${spring.version}</version>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
    
      <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        
            <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
           <version>3.1.0</version>
        </dependency>
    
        <dependency>
           <groupId>javax.servlet.jsp.jstl</groupId>
           <artifactId>jstl-api</artifactId>
           <version>1.2</version>
        </dependency>
    
        <dependency>  
           <groupId>taglibs</groupId>
           <artifactId>standard</artifactId>
           <version>1.1.2</version>
        </dependency>
    
      </dependencies>
      <build>
        <finalName>maven_webapp</finalName>
      </build>
    </project>
    View Code

    2.4    配置web.xml

    设置spring-mvc的配置文件路径/WEB-INF/mvc-dispatcher-servlet.xml,mvc-dispatcher-servlet.xml文件可以在后面创建。

    <web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
    
      <display-name>Archetype Created Web Application</display-name>
      <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
        <servlet>
            <servlet-name>mvc-dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
            <init-param>
                <!-- 配置springmvc配置文件的加载位置,如果不配置的话默认加载WEB-INF目录下的
                    [servlet-name]-servlet.xml
                    这里没配置的话将加载目录下的springDispatcherServlet-servlet.xml
                 -->
                <param-name>contextConfigLocation</param-name>
                <!-- 这里需要注意项目中的classpath并不是/src目录下,而是存放编译后的代码的地方,
                    通常默认为/classes目录下 
                -->
                <!--<param-value>classpath:springmvc-servlet.xml</param-value>-->
                <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
            </init-param>
    
            <load-on-startup>1</load-on-startup>
        </servlet>
        
        <!-- Map all requests to the DispatcherServlet for handling -->
        <servlet-mapping>
            <servlet-name>mvc-dispatcher</servlet-name>
            <!-- 配置DispatcherServlet需要拦截配置,共有 *.[xx], /*, /, /xx/* 几种方式
                这里我们配置为/ 即为拦截所有的资源,后面我们会在springmvc配置文件中单独配置
                静态资源让其不拦截
            -->
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>
    View Code

    2.5   spring-mvc配置

    根据上一步web.xml中的spring-mvc的文件路径配置,需要在WEB-INF目录下手动创建一个名字为mvc-dispatcher-servlet.xml的文件,添加配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context.xsd"
            >
    
        <!-- 开启springmvc的注解 下面就不需要手动注册注解类型的处理器映射器与处理器适配器 -->
        <mvc:annotation-driven/>
    
        <!-- 扫描注解,配置到需要扫描的包即可 -->
        <context:component-scan base-package="com.gg.maven_webapp"></context:component-scan>
    
        <!-- 设置静态资源路径,这样就不会被前端控制器拦截处理 -->
        <mvc:resources location="/resources/" mapping="/resources/**"></mvc:resources>
    
        <!-- 注册视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!-- jsp中会使用到jstl,所以设置为jstlView -->
             <property name="viewClass"  value="org.springframework.web.servlet.view.JstlView"/>
    
            <!-- 视图路径前缀 -->
            <property name="prefix" value="/resources/jsp/" />
    
            <!-- 视图后缀 -->  
            <property name="suffix" value=".jsp" />
        </bean>
    </beans>
    View Code

    2.6    创建spring mvc的控制器类

    创建一个spring mcv控制器类BaseController:

    源代码:BaseController.java

    package com.gg.maven_webapp;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
        
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.ui.Model;
    @Controller
    @RequestMapping("/say")
    public class BaseController {
        @RequestMapping("/hello")
        public String hello(ModelAndView modelAndView,Model model,HttpServletRequest request) {
            String context = " say hello";
    
            modelAndView.addObject("modelview", "modelview"+context);
            model.addAttribute("model", "model"+context);
            request.setAttribute("request", "request"+context);
    
            System.out.println(context);
            return "result";
        }
    }
    View Code

    代码中的return “result”表示对应的视图result.jsp文件,根据mvc-dispatcher-servlet.xml文件中的配置,视图的文件放置在/webapp/resources/jsp/,对应文件result.jsp。

    稍后通过  http://localhost:8080/maven_webapp/say/hello  访问。

    2.7    创建jsp视图文件

    在对应目录下创建result.jsp视图文件

    html源代码:

    <html>
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <body>
    <h2>Hello World!</h2>
    <body>
        <p>modelAndView结果${modelview}</p>
        <p>model结果${model }</p>
        <p>request结果${request }</p>
    </body>
    </body>
    </html>
    View Code

    2.8    Tomcat运行项目

    如果项目中已经添加了Tomcat Server的话,可以 右键->Add And Remove…,将项目添加到启动配置中。

     

     启动运行tomcat,打开浏览器访问:http://127.0.0.1:8080/maven_webapp/say/hello

    感谢技术圈的朋友们常来常往,希望我的每一个分享能帮助到大家,如果帮助到了您,请给我留下点点的评论或关注,我也想和您成为朋友,感谢大家一起交流一起进步
  • 相关阅读:
    Python打包方法——Pyinstaller
    在线检测显示器屏幕尺寸
    python_分布式进程中遇到的问题
    软件测试面试题(一)
    Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'
    mac系统 安装 IPython
    京东自动抢茅台脚本 Python
    CMake使用总结(一)
    小白安装eclipse插件—>testNG
    离线安装eclipse-testNG插件
  • 原文地址:https://www.cnblogs.com/fengguozhong/p/12072774.html
Copyright © 2020-2023  润新知