使用idea搭建一个简单的SSM框架:(2)配置springMVC

使用maven,修改pom文件,大部分项目为了开发规范都会采用web-service-dao这样的分层模式,我在配置spring时也按照这三层来配置,我觉得的这样很容易记住毕竟只是初学者,如有不当希望指正。当然在学习过程中在使用jstl标签时不知为何项目一直报错,查过很多资料也不行

最后改为使用freemarker。

复制代码
<dependencies>

        <!--使用junit4-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!--1)日志:slf4,log4g,logback,common-logging
        slf4是接口,
        其他是实现
         -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.6</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--2)数据库相关-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
        <!--3)DAO层框架-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!--servlet web相关依赖-->
        <!--由于jstl莫名其妙不能用所以使用freemarker-->
        <!-- jstl 部分   -->
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!--freemarker部分 需要额外引入spring-context-support-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.20</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.4</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <!--4)spring依赖-->
        <!--spring核心依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <!--spring DAO层依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <!--spring 事务依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <!-- spring web依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <!--spring test依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <!--时间转换-->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.9.4</version>
        </dependency>
    </dependencies>
复制代码

 修改好后还需要导入包,点击Reimport All Maven Prijects按钮后就将你写的包导入到项目了

可以在项目external libraries中查看所有的包

接下来在resources文件夹下创建spring文件夹来放置所有的spring配置,新建spring-web.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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:task="http://www.springframework.org/schema/task"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context-3.1.xsd
         http://www.springframework.org/schema/aop
         http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
         http://www.springframework.org/schema/tx
         http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
         http://www.springframework.org/schema/task
         http://www.springframework.org/schema/task/spring-task-3.1.xsd
         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--配置springmvc-->
    <!--1:开启Mvc注解-->
    <!--简化配置:
        (1)自动注册DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter
        (2)提供一系列:数据绑定,数组和日期的转化,xml和json默认读写支持
    -->
    <mvc:annotation-driven/>

    <!--2:静态资源默认servlet配置-->
    <!--1:加入对静态资源的处理
          2:允许使用"/"做整体映射
    -->
    <mvc:default-servlet-handler/>
    
    <!--3:配置jsp显示viewResolve-->
    <bean  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"/>
        <property name="order" value="0"/>
    </bean>


</beans>
复制代码

 

写完这些配置后可以新建一个类来进行测试,新建cn.demo.controller.Demo1Controller 代码如下

复制代码
package cn.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Created by Administrator on 2017/3/22.
 */
@Controller
public class Demo1Controller {


    /***
     * value表示在浏览器输入的地址如:http://localhost:8080/simple-demo/demo
     * method可以不写,默认为GET,当处理POST请求时必须要写method = RequestMethod.POST,否则找不到地址
     *
     * @return 返回的是页面的地址,在配置文件InternalResourceViewResolver中配置prefix和suffix相当于最后返回/WEB-INF/jsp/demo1.jsp
     */
    @RequestMapping(value = "/simple-demo/demo",method = RequestMethod.GET)
    public String demo1View(){
        return "demo1";
    }
}
复制代码

 

当然还要在WEB-INF下新建jsp文件夹,新建demo1.jsp文件。做完这些后就可以进行测试,来验证配置是否成功了。大家普遍使用tomcat,但是在idea中有一个更加好的插件jetty runner,启动和重新启动明显要比tomcat要快很多,给我的学习带来了很大的方便。idea下载插件如下图所示

点击file选择setting选择plugins点击右边的Browse Repositories搜索jetty runner然后点击安装

安装完成后点击右上角的小尖尖,点击Edit Configurations,点击加号,选择jetty runner,点击确定,添加时可能会报错,原因是我们还没有编译我们项目,jetty runner找不到对应的class文件,点击右上角Edit Configurations左边的向下的绿色按钮进行编译

在编译完成后会新出现target文件夹,最后jetty runner的配置如下

好了,终于配置完成了,点击右上角的绿色小虫子按钮,开始调试。

但是不幸的事情发生了····报错了····

log4j:WARN No appenders could be found for logger (org.eclipse.jetty.util.log).

原来是没有添加日志的配置

在resources下添加log4j.properties

复制代码
log4j.rootLogger=DEBUG,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n

#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
复制代码

 

再次启动发现一切正常,接着在网站上访问刚才的测试地址 http://localhost:8080/simple-demo/demo,怀着激动的心情点击回车,但是结果很不幸···又报错了。仔细一看原来我们配置了spring-web.xml文件但是在web.xml中确一点都没有改。遂修改web.xml。

在web.xml中添加了spring提供的CharacterEncodingFilter进行编码过滤。

复制代码
<?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>

  <!-- 编码过滤器 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <servlet>
    <servlet-name>springMvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/spring-web.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>springMvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>
复制代码

 

注意!!!!!

在修改了web.xml后还要修改spring-web.xml配置文件,将我们自己写的类注入到spring ioc容器中在配置文件中添加

<!--4:扫描web包-->
    <context:component-scan base-package="cn.demo.controller"/>

 

这句话的作用是spring自动扫描cn.demo.controller下的类,就是我们自己写的controller类,这样我们自己写的类才有作用,要不然就白写了。

所有配置完成后再次重新启动jetty runner,访问自己写的地址

很明显这样我们springMvc已经配置成功了。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值