springmvc环境搭建以及常见问题解决

1.新建maven工程

a)  打开eclipse,file->new->project->Maven->Maven Project

b)  下一步

c)   选择创建的工程为webapp,下一步

d)   填写项目的group id和artifact id。一般情况下,group id写域名的倒序,artifact id写项目名称即可。最后点完成。

e)   最初建好后,项目目录结构如下

f)   一般的项目目录中,还有src/main/java,src/main/test/java,src/main/test/resources这 三个source folder,需要手动创建。

2. 修改项目基本设置

a)    右键此项目名称->Properties->Java Build path,点击source标签。

b)  将上missing的文件夹删除,然后重新添加,如下:

c)   重新添加之后的效果如下:

d)   如果某些folder不想 build path,直接remove就行了(本人只选择了src/main/java, 和 src/main/resources),最终如下:

e)  修改jre系统

f)  修改java compiler compliance level 与 jre系统的level一致

g) 修改Project Facets

Dynamic Web Module无法在这里直接修改为3.0,需要打开工程目录下有一个.settings文件夹,打开org.eclipse.wst.common.project.facet.core.xml,做如下修改:

<installed facet="jst.web" version="3.0"/>

重启eclipe就可以看到更改生效了。

3.必要的配置文件

在Java Resources/scr/main/resources目录下,创建configs文件夹,以便存放在web.xml中声明的配置路径

applicationContext.xml (Spring的公共配置文件)

<?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:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:cache="http://www.springframework.org/schema/cache" xmlns:repo="http://www.springframework.org/schema/data/repository"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/data/repository http://www.springframework.org/schema/data/repository/spring-repository-1.7.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
            http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd "
    default-lazy-init="true">

    <description>Spring公共配置</description>

    <!-- 使用annotation 自动注册bean, 并保证@Required、@Autowired的属性被注入 -->
    <context:component-scan base-package="com.ds">
        <context:exclude-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
        <context:exclude-filter type="annotation"
            expression="org.springframework.web.bind.annotation.ControllerAdvice" />
    </context:component-scan>

</beans>

spring-mvc-config.xml (springmvc的配置文件)

<?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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

     <context:component-scan base-package="com.ds"
        use-default-filters="false">
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
        <context:include-filter type="annotation"
            expression="org.springframework.web.bind.annotation.ControllerAdvice" />
     </context:component-scan>

    <!-- json Converter配置     -->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8" />
            </bean>
            <bean
                class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="prettyPrint" value="true" />
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

    <bean id="freemarkerConfigurer"
        class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/views/" />
        <property name="defaultEncoding" value="UTF-8" />
        <property name="freemarkerSettings">
            <props>
                <prop key="template_update_delay">10</prop>
                <prop key="locale">zh_CN</prop>
                <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
                <prop key="date_format">yyyy-MM-dd</prop>
                <prop key="defaultEncoding">utf-8</prop>
            </props>
        </property>
        <property name="freemarkerVariables">
            <map>
                <entry key="ctx" value="/demo" />
            </map>
        </property>
    </bean> 

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
        <property name="suffix" value=".ftl" />
        <property name="contentType" value="text/html;charset=UTF-8" />
        <property name="exposeRequestAttributes" value="true" />
        <property name="exposeSessionAttributes" value="true" />
        <property name="exposeSpringMacroHelpers" value="true" />
        <property name="requestContextAttribute" value="request" />
        <!-- 多ViewResovler配置 ,值越小就优先解析,这里的配置是 先找 ftl,再去找 mv ,最后去找jsp文件 -->
        <property name="order" value="1" />
        <property name="cache" value="true" />

    </bean>

    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
        <property name="order" value="2" />
    </bean>

    <mvc:default-servlet-handler />

</beans>

web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>  

<web-app
    version="3.0"
    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_3_0.xsd">  

  <display-name>Archetype Created Web Application</display-name>
  <description>sprintMVC环境搭建</description>
         <!-- 加载Spring配置文件 -->
         <context-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:/config/applicationContext.xml</param-value>
         </context-param>

         <!-- Spring监听 -->
         <listener>
             <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
         </listener>

         <!-- Spring MVC配置 -->
         <servlet>
             <servlet-name>Dispatcher</servlet-name>
             <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
             <!-- 自定义spring mvc的配置文件名称和路径 -->
             <init-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>classpath:config/spring-mvc-config.xml</param-value>
             </init-param>
             <load-on-startup>1</load-on-startup>
         </servlet>

         <!-- spring mvc 请求后缀 -->
         <servlet-mapping>
            <servlet-name>Dispatcher</servlet-name>
            <url-pattern>/</url-pattern>
         </servlet-mapping>
         <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
         </welcome-file-list>
</web-app>

最后添加工程依赖的jar包,也就是配置pom.xml, 最终效果图如下

  注:其实测试的话没有必要依赖这么多了,只需要将spring-webmvc依赖上就行了。

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.springmvc</groupId>
  <artifactId>test</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>dsdemo Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <profiles>
    <profile>
        <id>jdk-1.7</id>
        <!-- 另外一种激活方式 -->
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.7</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.7</maven.compiler.source>
            <maven.compiler.target>1.7</maven.compiler.target>
            <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
        </properties>
    </profile>
  </profiles>

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

    <dependency>
        <groupId>io.springside</groupId>
        <artifactId>springside-core</artifactId>
        <version>4.3.0-RELEASE</version>
        <classifier>RELEASE</classifier>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.20</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>4.1.9.RELEASE</version>
    </dependency>

   <!-- jackson api -->
    <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.1.0</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.1.0</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
          <version>2.1.0</version>
      </dependency>

      <dependency>
          <groupId>net.sf.json-lib</groupId>
          <artifactId>json-lib</artifactId>
          <version>2.4</version>
          <classifier>jdk15</classifier>
      </dependency>

      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.35</version>
      </dependency>

      <!-- hibernate begin -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.5.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-ehcache</artifactId>
            <version>4.3.5.Final</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <groupId>net.sf.ehcache</groupId>
                    <artifactId>ehcache-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.5.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.0.3.Final</version>
        </dependency>
        <!-- hibernate end -->

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>1.9.4.RELEASE</version>
        </dependency>

  </dependencies>
  <build>
    <finalName>test</finalName>
  </build>
</project>

4.简单的测试

  写一个简单的Controller,放在src/main/java文件夹下。然后写一个hello.jsp文件或者hello.ftl文件放在WEB-INF/views目录下,因为在spring-mvc-config.xml中已经指定了<property name="templateLoaderPath" value="/WEB-INF/views/" />(freemarker视图解析器) 和  <property name="prefix" value="/WEB-INF/views/" />(InternalResourceViewResolver视图解析器)视图文件的位置。

Controller

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;

@Controller

public class HelloController {

         @RequestMapping("/hello")

         public ModelAndView hello(){

                   ModelAndView mv =new ModelAndView();

                   mv.addObject("spring", "spring mvc");

                   mv.setViewName("hello");

                   return mv;

         }

}

hello.jsp

<!DOCTYPE html>

<html>

         <head>

                   <meta charset="utf-8">

                   <title>sprint hello</title>

         </head>

         <body>hello ${spring}!

         </body>

</html>

5.常见问题解决

a)  工程项目有小红叉,但是却找不到错误

  window->show view->problems, 查看错误如下:

  Dynamic Web Module 3.0 requires Java 1.6 or newer.    test        line 1    Maven Java EE Configuration Problem

Java compiler level does not match the version of the installed Java project facet.    test  Unknown    Faceted Project Problem (Java Version Mismatch)

  解决办法:

  在pom.xml中添加如下代码, 然后右键项目->maven->update project

 <profiles>
    <profile>
        <id>jdk-1.7</id>
        <!-- 另外一种激活方式 -->
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.7</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.7</maven.compiler.source>
            <maven.compiler.target>1.7</maven.compiler.target>
            <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
        </properties>
    </profile>
  </profiles>

b) 用tomcat启动工程时出现 如下的错误:

严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:518)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:499)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4733)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5251)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

  解决办法:右键项目->properties->Deployment Assembly, 然后添加 maven dependencies

     

 

c) 采用uuid主键生成策略遇到的问题

  No generator named "uuid" is defined in the persistence unit

  解决办法:右键项目->properties->JPA->Errors/Warnings, 或者 window->preferences->java persistence->JPA->Errors/Warnings

时间: 2024-08-01 10:22:32

springmvc环境搭建以及常见问题解决的相关文章

Android开发环境搭建及常见问题解决方法

在移动互联网的时代,Android的份额早已超过了苹果.Android的出现无疑加速了移动互联网的普及,手机操作系统已经是IOS和Android的天下了,什么winphone之类的可以说没它们什么事了.记得三年前做过一个简单的基于Android2.2的一个小应用.当时只是为了好玩,因而也没有相应的文档记录:后来由于工作原因也就没有继续讲Android开发进行下去.趁有时间再来折腾折腾Android的开发吧.想要开发Android的应用,首先需要安装Android的开发环境,下面记录了Androi

开发环境搭建及常见问题解决方法

http://blog.sina.com.cn/s/blog_1556e73ba0102w62k.htmlhttp://blog.sina.com.cn/s/blog_1556e73ba0102w62j.htmlhttp://blog.sina.com.cn/s/blog_1556e73ba0102w62i.htmlhttp://blog.sina.com.cn/s/blog_1556e73ba0102w62f.htmlhttp://blog.sina.com.cn/s/blog_1556e73

SpringMVC环境搭建(xml版本)

SpringMVC是Web层框架,它隶属于Spring框架,只是Spring这个庞大框架下的一个小模块,用于替换Servlet 1.下载jar包(20) http://zhidao.baidu.com/link?url=guH_VTC2FKGftWBtdCW_AU_z9t5QgyGqlr-DEwkryPCNhhlySr9wJACJVJu3hRiib50j_GNFkQNxZr4-k2v3z5jRpS1poxR3YZeb5dfThuS我是根据这个网址找到一个压缩包,解压后libs下会发现很多jar包

SpringMVC环境搭建

springmvc和stuts2相同是实现mvc的优秀框架,进行业务逻辑控制.最大的差别就是struts2通过filter拦截请求到Action.而spring用的是servlet获取请求到controller.再一个是springmvc不用过多进行配置,能够通过注解非常方便简单的进行开发. SpringMVC+Spring+Hibernate环境搭建: 1 导入相应jar包: 2 在web.xml配置Spring的监听器,指定配置.配置SpringMVC的核心Servlet,指定哪些请求由Sp

spring入门(五)【springMVC环境搭建】

springMVC作为spring的一个WEB组件,是一个MVC的思想,减少了WEB开发的难度,现介绍springMVC环境的搭建,具体的原理放在后面介绍.用过框架的朋友都知道要在WEB项目中使用一个框架,必须要引入这个框架,和其他框架的引用方式一样,springMVC的引入方式是通过DispatcherServlet,那么我们就要在web.xml中配置此servlet,在lib目录下我已经把用到的jar包全部导入,下面看我的web.xml文件的配置, <?xml version="1.0

力所能及之springmvc环境搭建

小狼从12年学习java开始,就听老师说了若干springmvc的高大上,可是人家就吊你胃口,死活不给你讲.当然,小狼不是盈利机构,不需要赶时间,这个该讲,那个不该讲的.今天,小狼就说说springmvc的环境搭建. 开发环境:myeclipse8.6  spring4.0 开发需要的jar文件: 项目结构: web.xml配置: <?xml version="1.0" encoding="UTF-8"?> <web-app version=&qu

SpringMVC环境搭建之Idea

SpringMVC一.. SpringMVC重要组件介绍    1. DispacherServlet:前端控制器,接收所有请求,(如果配置/不包含jsp)    2. HandlerMapping:解析请求格式,判断希望要执行哪个方法    3. HandlerAdapter:负责调用具体的方法    4. ViewResovler:视图解析器,解析结果,准备跳转的具体的视图 spring的jar包官方下载地址: https://repo.spring.io/libs-release-loca

[精华]springMVC环境搭建基础入门总汇!

1.SpringMVC概述 SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 Spring       FrameWork 的后续产品,已经融合在 Spring Web Flow 里面.Spring 框架提供了构建 Web 应用程序的全功 能 MVC 模块.使用 Spring 可插入的 MVC 架构,从而在使用 Spring 进行 WEB 开发时,可以选择使用 Spring 的 Spring MVC 框架或集成其他 MVC 开发框架,如

cocos2d-js windows下搭建及常见问题解决

(小白一个,为了搭建js环境,尝试了很多次(都是泪呀),在此记录自己搭建过程,一下所需文件在低端有我成功所用的文件分享) 一.安装(环境的搭建) 1.python: [1]官网上说不支持3以上版本,所以还是安装2.7.X的版本吧 [2]将python添加至环境变量Path中 [3]cmd下输入python,安装成功如下图: 2.jdk [1]下载jdk安装,安装路径不要用空格或中文,个人建议下载7版本.(个人开始用8,在配置中出现一个错误,换为7以便后变没了) [2]添加环境变量: 在系统变量中