zoukankan      html  css  js  c++  java
  • 基于IDEA+Maven+SpringMVC的入门web程序分析(一)

    第一步:Maven项目的创建【手动创建Maven项目而没有使用Maven的自动构建web项目】

    使用Maven模板自动构建web项目图如下,这里不细讲:

    手动创建Maven Web项目流程如下:

    1.1 File->New->Project 出现下图:

    1.2 然后点击next,出现下图

    由GroupId、ArtifactId、Version三个元素直接确定了唯一的一个Maven模块

    填写相应的GroupId、ArtifactId

    注意,上面的三个属性会出现在Maven的pom.xml文件中

    1.3 点击next,出现如下所示的图片

    这里的Project name(上面)和Module name(下面)根据上一步的ArtifactId默认生成,这里自己可以随意修改的。这里的项目名称和模块名称是一样的,也可以不一样。

    1.4 点击finish,出现如下图所示界面:

    中间显示的是pom.xml文件,可以看见之前所选择的GroupId、ArtifactId和Version都出现在pom.xml文件中,右下角这个小标签提示Maven projects need to be imported(Maven项目需要导入),可以点击下面的Import Changes选项,导入所发生的变化,以后的Maven项目的pom.xml文件发生变化时,右下角都会提醒,自己可以选择性的导入相应的变化。

    第二步:构建基于Maven和SpringMVC的Web项目目录结构

    2.1 在上面点击finish后的Web项目目录结构如下图所示:

    1.2 现在对上面的Web项目目录结构做相应的更改,得到如下所示的项目目录结构

    第三步:一些必须的准备工作

    3.1 File->Project Stricture设置(在整个软件界面的上方也能看到Project Structure前面的图标,点击进去,同样设置),如下图:

    3.2 先进行Project的设置,这里最重要的就是Project SDK的设置,其他的默认就可以了。下面的Project compiler output指示了项目编译后,生成的相应文件都放在哪!所以编译后整个目录结构是会多一个out文件夹的。

    3.2 现在进行Modules的设置

    3.2.1 可以看到Modules有三个重要标签,Source标签已经显示出来了,这里不用设置,默认就好,如下如所示:

    3.2.2 再来看Path标签,重要的Compile output标签,选着第二项,可以发现,项目编译后的classes文件都放在target目录下,所以后面的目录结构也新增了一个target文件夹。

    3.2.3 设置Dependecies标签,这里很重要

    (1) 导入依赖JAR包,点击右边的+,然后选择第一个选项Jars or Directories

    方框1:里面的jar包路径,选择自己jar包所在的位置就好

    方框2:选择相应的jar包,然后点击OK导入

    导入后的结果如下所示:

    这里的导入的Jar包是作为外部库(External Librarise)存在的,可以在Web项目目录结构中看到:

    (2) 这里先新增一个web结构,开发web项目必须要添加此配置,主要是对Web.xml和Web根目录做一个配置,否则最后项目运行时,会出现404错误

    新增前:

    新增后:

    新增后以及配置前:

    这里要根据你实际的Web项目目录来进行路径设置:

    实际Web项目目录结构如下:

    配置后的结果如下:

    路径设置好后:

    会发现相应的图标发生了变化,主要是web.xml和文件夹webapp:

    配置前:

    配置后:

    到目前为止,Modules部分就全都配置好了,不过可以看到上面的图里面有一个警告:Web Facet resources are not included in an artifact,这里我们在Artifact设置部分(下面)来解决;

    3.3 Artifact部分设置: 这里设置的主要是看最后我们的项目是以怎么一种形式发布,web项目的发布一般选择war包的形式进行发布,不需要直接发布源代码。

    配置前,可以发现中间部分什么都没有:

    点击+,进行配置:

    选择From Modules:

    点击OK:

    到此为止,Project Structure就全部设置好了

    第四步,代码、配置文件整理

    4.1 控制器Controller相关代码,这里是基于XML配置的方式,控制器的实现需要实现Controller接口

     1 package com.wangfei.firstspringmvc.controller;
     2 
     3 
     4 import org.springframework.web.servlet.ModelAndView;
     5 import org.springframework.web.servlet.mvc.Controller;
     6 
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 public class IndexController implements Controller{
    11 
    12     public IndexController(){
    13 
    14     }
    15 
    16 
    17     public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
    18 
    19         ModelAndView mv = new ModelAndView("index.jsp");
    20         mv.addObject("message","Hello Spring MVC");
    21 
    22         return mv;
    23     }
    24 }
    View Code
     1 package com.wangfei.firstspringmvc.controller;
     2 
     3 
     4 import org.springframework.web.servlet.ModelAndView;
     5 import org.springframework.web.servlet.mvc.Controller;
     6 
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 public class IndexController implements Controller{
    11 
    12     public IndexController(){
    13 
    14     }
    15 
    16 
    17     public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
    18 
    19         ModelAndView mv = new ModelAndView("index.jsp");
    20         mv.addObject("message","Hello Spring MVC");
    21 
    22         return mv;
    23     }
    24 }

    4.2 web.xml文件配置,这里主要配置的是处理客户端浏览器发出请求的前端控制器DispatcherServlet,既然是一个Servlet,所以就和Servlet的配置很类似:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
     5 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     6 
     7 
     8     <!-- 配置SpringMVC的请求处理接口 前端控制器-->
     9     <servlet>
    10         <servlet-name>firstspringmvc</servlet-name>
    11         <servlet-class>
    12             org.springframework.web.servlet.DispatcherServlet
    13         </servlet-class>
    14         <load-on-startup>1</load-on-startup>
    15     </servlet>
    16     <servlet-mapping>
    17         <servlet-name>firstspringmvc</servlet-name>
    18         <url-pattern>/</url-pattern>
    19     </servlet-mapping>
    20 </web-app>
    View Code
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
     5 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     6 
     7 
     8     <!-- 配置SpringMVC的请求处理接口 前端控制器-->
     9     <servlet>
    10         <servlet-name>firstspringmvc</servlet-name>
    11         <servlet-class>
    12             org.springframework.web.servlet.DispatcherServlet
    13         </servlet-class>
    14         <load-on-startup>1</load-on-startup>
    15     </servlet>
    16     <servlet-mapping>
    17         <servlet-name>firstspringmvc</servlet-name>
    18         <url-pattern>/</url-pattern>
    19     </servlet-mapping>
    20 </web-app>

    注意这里的<servlet-name>标签里面的名字firstspringmvc是可以随便取的,不是固定的;但是下面的<servlet-mapper>标签里面的<servlet-name>里面的名字要和上面的一致

    4.3 firstspringmvc-servlet.xml的配置;这里的文件名格式为: 模块名-servlet.xml 这里绝不不能错,错了以后你会发现tomact可以正常运行,但是访问index.jsp文件时就会报错:报错如下所示

    具体错误如下:

     1 Could not open ServletContext resource [/WEB-INF/firstspringmvc-servlet.xml] 

    这里已经提示你找不到firstspringmvc-servlet.xml文件,所以只需要把你的.xml文件改成firstspringmvc-servlet.xml这个名字就好

    具体的firstspringmvc-servlet.xml配置如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 <beans xmlns="http://www.springframework.org/schema/beans"
     4        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     5        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
     6 
     7 <!--[注意]此处的xml文件的名称为 模块名-servlet.xml,而不是 项目名-servlet.xml-->
     8     <!-- vivo-firstspringmvc这个是项目名 旁边的firstspringmvc为模块名-->
     9 
    10     <!--编写处理器映射器:拦截URL-->
    11     <bean id="simpleUrlHandlerMapping"
    12           class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    13         <property name="mappings"><!--这里的name值不是随便写的-->
    14             <props>
    15                 <!--对于浏览器发出的url(/index)请求,通过前端控制器交给处理器映射器,然后找到合适的控制器(handler)来进行处理-->
    16                 <prop key="/index">indexController</prop>
    17             </props>
    18         </property>
    19     </bean>
    20 
    21     <!--通过XML装配bean-->
    22     <!--这里声明bean的id名称,是为了方便引用(见上面的处理器拦截器)-->
    23 
    24     <bean id="indexController" class="com.vivo.firstspringmvc.controller.IndexController"></bean>
    25 </beans>
    View Code
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 <beans xmlns="http://www.springframework.org/schema/beans"
     4        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     5        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
     6 
     7 <!--[注意]此处的xml文件的名称为 <servlet-name>-servlet.xml,而不是 项目名/模块名-servlet.xml-->
     8     
     9 
    10     <!--编写处理器映射器:拦截URL-->
    11     <bean id="simpleUrlHandlerMapping"
    12           class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    13         <property name="mappings"><!--这里的name值不是随便写的-->
    14             <props>
    15                 <!--对于浏览器发出的url(/index)请求,通过前端控制器交给处理器映射器,然后找到合适的控制器(handler)来进行处理-->
    16                 <prop key="/index">indexController</prop>
    17             </props>
    18         </property>
    19     </bean>
    20 
    21     <!--通过XML装配bean-->
    22     <!--这里声明bean的id名称,是为了方便引用(见上面的处理器拦截器)-->
    23 
    24     <bean id="indexController" class="com.wangfei.firstspringmvc.controller.IndexController"></bean>
    25 </beans>

    代码中的备注,都是很重要的地方

    4.4 JSP代码,里面用JSTL语法,来读取ModelAndView中的message

    1 <%@ page language="java" contentType="text/html; charset=UTF-8"
    2          pageEncoding="UTF-8" isELIgnored="false"%>
    3 
    4 <h1>${message}</h1>
    View Code
    1 <%@ page language="java" contentType="text/html; charset=UTF-8"
    2          pageEncoding="UTF-8" isELIgnored="false"%>
    3 
    4 <h1>${message}</h1>

    4.5 pom.xml文件不改也可以,web应用可以正常运行,但是模块编译的时候会出现错误:

    pom.xml文件配置如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>com.vivo.firstspringmvc</groupId>
     8     <artifactId>vivo-firstspringmvc</artifactId>
     9     <version>1.0-SNAPSHOT</version>
    10 
    11     <!--下面的这一部分不是必须的,但是没有会影响maven模块的编译-->
    12     <build>
    13         <defaultGoal>compile</defaultGoal>
    14         <finalName>vivo-firstspringmvc</finalName>
    15     </build>
    16 
    17 
    18 </project>
    View Code
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>com.wangfei.firstspringmvc</groupId>
     8     <artifactId>vivo-firstspringmvc</artifactId>
     9     <version>1.0-SNAPSHOT</version>
    10 
    11     <!--下面的这一部分不是必须的,但是没有会影响maven模块的编译-->
    12     <build>
    13         <defaultGoal>compile</defaultGoal>
    14         <finalName>firstspringmvc</finalName>
    15     </build>
    16 
    17 
    18 </project>

    第五步,配置运行环境,主要是Maven的配置和Tomcat的配置,如下图所示1处,2处是之前的Project Structure设置(快捷键Shift+Alt+Ctrl+S)

    5.1 Maven的配置

    1处的名字可以随便取,2处的配置很重要,这里需要根据你自己的maven版本以及settings.xml文件和repository文件所在的路径进行配置

    5.2 Tomcat的配置

    5.2.1 首先是server的配置:

    方框1: 名字可以随便取

    方框2:tomcat的版本根据自己的设定

    方框3:这里主要是对虚拟机VM的设置,比如字符编码设置-Dfile.encoding=UTF-8

    方框4:这是很重要,主要是选取什么War包进行Deployment,【这里和之前的Project Structure里面Modulers的Web设置有很大关系】点击Fix后如下图所示:

    第六步,运行:

  • 相关阅读:
    flutter 中 List 和 Map 的用法
    AndroidStudio中Flutter打包APK
    flutter中的异步机制 Future
    [控件] 画饼状图的控件
    用CAShapeLayer写股市K线图动画效果
    使用Instruments中的CoreAnimation分析动画
    山寨Facebook的Shimmer效果
    maskView遮罩中多张图片的动画
    将CAGradientLayer用作maskView的遮罩图层
    [翻译] JKLLockScreenViewController
  • 原文地址:https://www.cnblogs.com/piaxiaohui/p/7642076.html
Copyright © 2011-2022 走看看