使用IntelliJ IDEA开发Maven SpringMVC网站

使用IntelliJ IDEA开发Maven SpringMVC网站


最新在学习java web项目的开发,按照网上的例子搭建web的demo运行成功,但配置spring mvc项目时始终运行不成功,通过参考不少的资料终于配置并运行成功,前面失败的原因无非是某些细节的地方资料说得不是很清楚,以至于新手很容易搞错,所以将自己详细搭建的步骤写出来,供新手参考

一、相关环境:

     - IntelliJ IDEA 2017.1.4 x64
     - Tomcat 7.0.78
     - JDK 1.8.0_91
     - Spring 4.3.9
     - Maven 3.3.9

     以上是这个demo所需要的东西,比如说如果你用不惯Maven的话可以自行去官网下载jar包然后导入自己的工程中,如果想要学习下Maven可以看看《Maven视频教程》(偶然找到,这个老师做的视频都挺好的,推荐以下),不用完全的去学习Maven,懂大概意思后再去找找IntelliJ IDEA如何配置maven的相关文章就足够了。
     事先声明,请确保IntelliJ IDEA、Tomcat、MySql和JDK都已经安装好。Maven的话能有则有。Maven为了让导包更容易,后者为了让页面更美观。废话不多说,正式开始

二、Maven的安装与在IntelliJ中的配置

    在IntelliJ IDEA 2017.1.4 x64中自带了Maven这个插件,不用再安装,打开 File-Setting 找到如下图的位置,看到这些就说明Maven已经有了。


三、IntelliJ中配置Tomcat


    为了提供完全周到的服务,还是在这里讲讲Tomcat的配置,Tomcat也属于Apache,所以安装方法与Maven相似,只是不用配置环境变量。请自行上网下载压缩包版本如
32-bit Windows zip (pgp, md5, sha1)
64-bit Windows zip (pgp, md5, sha1)

    不建议下载安装器,解压后到\bin\目录下运行startup.bat,如图下所示,如果出现Server startup in xxxx ms说明Tomcat安装成功。
    在IntelliJ中,可以选择提前配置好Tomcat,或者之后配置。
    提前配置的话,打开Settings,搜索Application Server,如下图所示:
    点 + 号,选择Tomcat Server,导入Tomcat路径,OK,Apply,这样Tomcat就配置好了:

四、创建Maven Web项目

    现在进入正题,如何来创建一个Web项目。对于不使用Maven的开发者,可以直接建一个简单的Web项目。使用Maven的话,请按照图进行操作。

    菜单File->New Project可进入上图界面,首先选择左边栏Maven,再配置JDK(一般如果之前添加了JDK的话会自动填充,如未添加的话点击旁边的New将JDK目录导入进来就可以)。勾选“Create from archetype“,然后选中蓝色位置,点Next,进入如下界面:


    这里需要填写GroupId和ArtifactId还有Version,这三个属性目的是标识你的项目的唯一性,比如Tomcat的GroupId是org.apache,即它是apache组织的项目,ArtifactId是tomcat,项目名为tomcat。这些只在发布时有用,在此可以随便填写,填好后点两次Next,给你的项目起个名字,然后Finish,这样一个maven管理的web项目就创建完成了,其结构如下图所示(需要等待加载一会):到如下界面:



注意右下角的两个提示框,分别点击 configure,和 import changes,完成后,在项目文件夹上右键,F4,看到如图的界面:



说明项目已搭建成功。项目结构如下图:左边展示了该项目的文件结构。我们可以发现,它在src/main下创建了一个recources文件夹,该文件夹一般用来存放一些资源文件,还有一个webapp文件夹,用来存放web配置文件以及jsp页面等,这已经组成了一个原始的web应用。


接下来配置tomcat  ,点击工具栏上的  edit configure(位置1),如图:



点击左上角的 + 号,选择Tomcat Server->Local,会弹出上图2这样的框,修改下name(随便填写),切换到Deployment,这一步相当于部署应用到Tomcat,点击右边 + 号,选择Artifact,进入如下界面:照下图这样选择即可


注意:如果这一步没有出现Artifacts的话,在项目上右键打开 open module settting,artifact,设置类型为 web application exploded;
选择war exploded那个选项,然后OK,即项目已部署完成,点击OK,如图所示:

右上角出现了Tomcat的标识,点击右边那个箭头,启动Tomcat,启动成功后会自动打开浏览器 如下图:说明都已经配置好了。



五、配置spring mvc

    既然我们要用SpringMVC开发,那肯定少不了SpringMVC的相关jar包。如果不使用Maven的话,那就需要去官网下载相关的jar包,然后导入到项目中。现在使用maven的话,就不需要上网找jar包了。具体容我一一道来。

    Maven所做的工作其实很简单,就是自动把你需要的jar包下载到本地,然后关联到项目中来。maven的所有jar包都是保存在几个中央仓库里面的,其实一个最常用的是 Maven Repository,即,你需要什么jar包,它就会从仓库中拿给你。那么如何告诉maven需要什么jar包呢?我们看看工程目录,能找到一个pom.xml文件(这个文件在刚创建好项目时就已经展现在了大家面前),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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.lfb</groupId>
  <artifactId>springmvcdemo1</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>springmvcdemo1 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>springmvcdemo1</finalName>
  </build>
</project>

    我们可以看到这个文件包含了我们之前定义的本项目的gropId等信息,这些信息是该项目的标识,我们不要去改动它们。重点看<dependencies>标签,翻译过来是”依赖“的意思,也就是说把对每个包的需求都称为一个依赖<depedency>,定义在<dependencies>中。在每个<depedency>中,你需要提供的是所需jar包的groupId、artifactId、version这三个必要信息。比如上面我们看到引入可一个junit包,格式如下:

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
</dependency>

    这是单元测试包,提供了三个基本信息,第4个scope对其他包来说是非必需的。所有jar包的引入都要满足这个格式。那么如何查看这些jar包的3个信息呢,可能刚接触是开发者还不是很熟悉,这个时候就需要查阅仓库了。比如我们需要引入Spring核心jar包spring-core,打开 Maven Repository,搜索spring-core,进入如下界面:




点击进入红框选中的Spring Core,如下所示,可以看到各版本的使用情况:
先加入我们需要4.3.9RELEASE版本的spring-core.jar,我们点击该版本,进入如下界面,发现它给出了这个版本jar包的依赖引用方法,把红框中代码复制到pom.xml的<dependicies>中后,发现右上角出现了maven的询问,是否要导入改变,点击import changes

最后pom.xml的内容如下:

<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.lfb</groupId>
  <artifactId>springmvcdemo001</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>springmvcdemo001 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties>
    <spring.version>4.3.9.RELEASE</spring.version>
    <spring-data.version>1.2.0.RELEASE</spring-data.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-jpa</artifactId>
      <version>${spring-data.version}</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate.javax.persistence</groupId>
      <artifactId>hibernate-jpa-2.0-api</artifactId>
      <version>1.0.0.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>3.6.10.Final</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.34</version>
    </dependency>
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20080701</version>
    </dependency>
  </dependencies>
</project>


点击Import Changes,Maven就会开始自动下载jar包到本地(默认C盘,不过是可以修改的),然后关联到你的项目中,下载完成后,我们展开工程目录中External Libraries:可以发现,maven根据pom.xml在指定的依赖,把相关的包都添加进来了

这就是Maven的强大之处,如果你需要使用SpringMVC开发网站的话,只需记住几个重要的包的名字,就可以轻松将所有包导入项目中。

我们可以发现,除了导入了spring相关jar包,还有一些其他的包,这些包都是有作用的,我们后面慢慢说。如果不使用Maven请自行下载spring、hibernate、mysql、jstl、javax-servlet、json等相关jar包然后导入到工程中。至此,jar包的导入就完成了,我们按 ctrl+alt+shift+s,或者File->Project Structure查看一下项目结构,看看有什么问题:

由于之后我们要开始写代码了,先做一些配置,选择Modules,在src\main文件夹中新建一个文件夹,取名为java:

选中java文件夹,点击上面的Make as:Sources,该文件夹就会变成蓝色,用以保存java代码。

在java文件夹添加再从个包 com.example.controller,com.example.service再从个包,并添加 HomeControl.java文件,如下

package com.example.controller;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by xxx on 2017/7/19.
 */
// 注解标注此类为springmvc的controller,url映射为"/home"
@Controller
@RequestMapping("/home")
public class HomeController {
    //添加一个日志器
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

    //映射一个action
    @RequestMapping("/index")
    public  String index(){
        //输出日志文件
        logger.info("the first jsp pages");
        //返回一个index.jsp这个视图
        return "index";
    }
    //映射一个action
    @RequestMapping("/hello")
    public  String hello(){
        //输出日志文件
        logger.info("the first jsp pages");
        //返回一个index.jsp这个视图
        return "hello";
    }
}

/home 可以理解为根路径后的一级目录,action为一级目录后的部分; return “index" 表示返回index视图(本demo对应web-inf/jsp/index.jsp),对应配置文件mvc-dispatcher-servlet.xml中配置的view部分

接下来修改web.xml,修改后的内容如下:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<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_3_1.xsd"
         version="3.1">
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/</url-pattern>
  </filter-mapping>
</web-app>

接下来在web-inf下添加 mvc-dispatcher-servlet.xml(在web-inf上右键,new-选择xml configuration file- spring config),内容如下:

注:这个配置文件的文件名由 <servlet-name>mvc-dispatcher</servlet-name> 这个配置项决定 即 mvc-dispatcher + “-servlet".xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--指明 controller 所在包,并扫描其中的注解-->
    <context:component-scan base-package="com.example.controller"/>

    <!-- 静态资源(js、image等)的访问 -->
    <mvc:default-servlet-handler/>

    <!-- 开启注解 -->
    <mvc:annotation-driven/>

    <!--ViewResolver 视图解析器-->
    <!--用于支持Servlet、JSP视图解析-->
    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

最后在web-inf 添加jsp文件夹,在jsp文件夹中添加 index.jsp,hello.jsp两个文件,内容分别如下:

<%--
  Created by IntelliJ IDEA.
  User: xxx
  Date: 2017/7/19
  Time: 14:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>SpringMVC Demo</title>
</head>
<body>
<h1>这里是SpringMVC Demo首页</h1>

<h3>出现此页面,说明配置成功。</h3>
</body>
</html>

<%--
  Created by IntelliJ IDEA.
  User: hqj
  Date: 2017/7/19
  Time: 14:30
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>SpringMVC Demo</title>
</head>
<body>
<h1>这里是SpringMVC hello world</h1>

<h3>出现此页面,说明配置成功。</h3>
</body>
</html>

配置完这些后,再次启动tomcat,启动成功后可以看到默认的页面,在地址栏输入http://localhost:8080/springmvcdemo001/home/hello,可以看到如下图界面:


输入http://localhost:8080/springmvcdemo001/home/index,可以看到如下图界面:


至此说明spring mvc配置成功!路由也正常!

demo下载


--- end ---


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值