Idea 创建spring mvc例子

本文介绍了如何使用IntelliJ IDEA搭建一个简单的Spring MVC项目,包括项目优势、重要组件介绍,以及详细步骤,如配置web.xml、编写Controller和视图页面,并解决可能出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


spring mvc 简介 、架构、优势网上都一片一片的,现在主要结合Idea 创建一个hello world

1.     优势概括

使用简单,学习成本低

丰富简单的注解方式,减少xml文件配置

更简洁的控制层开发

支持多种视图集成

支持Restful风格

对静态文件的支持和过滤

强大的标签库

和Spring 其他框架无缝集成,是其它Web框架所不具备的


2.     重要组件

Ø  DispatcherServlet 核心控制器,也是一个servlet,通过在web.xml中配置,所有请求都经过这个类,负责全局的流程控制。

Ø  HandlerMapping 映射处理器,它会把请求映射为HandlerExecutionChain对象,通过url找到对应的Controler类

Ø  HandlerAdapter handler适配器,通过注解,把一个URL映射到Controller类的方法上,根据处理结果,返回ModelAndView对象

Ø  ViewResolver 视图解析器,将会根据逻辑视图名解析为具体的View,供页面渲染


3.     入门程序

1)       引入spring jar

Jstl 和standard一定要引入,否则不能解析jstl标签,spring mvc内部需要依赖。

<dependency>

           <groupId>javax.servlet</groupId>

           <artifactId>servlet-api</artifactId>

           <version>2.5</version>

       </dependency>

       <dependency>

           <groupId>taglibs</groupId>

           <artifactId>standard</artifactId>

           <version>1.1.2</version>

        </dependency>

       <dependency>

           <groupId>jstl</groupId>

           <artifactId>jstl</artifactId>

           <version>1.2</version>

       </dependency>

       <dependency>

           <groupId>org.springframework</groupId>

            <artifactId>spring-webmvc</artifactId>

           <version>${org.springframework.version}</version>

       </dependency>

       <dependency>

           <groupId>org.springframework</groupId>

           <artifactId>spring-core</artifactId>

            <version>${org.springframework.version}</version>

       </dependency>

2)       配置web.xml


<context-param>

       <param-name>contextConfigLocation</param-name>

       <param-value>/WEB-INF/springmvc-servlet.xml</param-value>

   </context-param>

<servlet>

                   <servlet-name>springmvc</servlet-name>

                   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

                   <load-on-startup>1</load-on-startup>

         </servlet>

         <servlet-mapping>

                   <servlet-name>springmvc</servlet-name>

                   <url-pattern>/</url-pattern>

         </servlet-mapping>


url-pattern:表示拦截所有请求


3)       配置HandlerMapping、HandlerAdapter

         <beanclass="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>

         <bean       class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

上面两个过时,可使用下面配置(主要是针对注解配置@RequestMapping)

    <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

<bean     class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

 

4)       ViewResolver配置       

<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="viewClass"value="org.springframework.web.servlet.view.JstlView"/>

        <property name="prefix"value="/WEB-INF/views/"/>

        <property name="suffix"value=".jsp"/>

    </bean>

一般页面都放在/WEB-INF/views下;InternalResourceViewResolver是支持jsp的视图解析,VelocityViewResolver是支持Velocity的。


5)       编写控制层Controler

@Controller             //此注解代表是控制器,不需要在xml中配置
@RequestMapping("/first")       //url
public class FirstController {
    @RequestMapping("hello")             //方法url
    public ModelAndView view() {
        ModelAndView mv = new ModelAndView();  //设置返回页面逻辑名,不带页面名后缀
        mv.addObject("message", "Hello World!");  //保存值到作用域中,key为msg
        mv.setViewName("hello");
        return mv;
    }
}


6)       编写页面


<%@ page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>

<html>

<head>

   <title>hello world</title>

</head>

<body>

${message}

</body>

</html>


7)       启动执行测试



需要注意的是,要引入jstl和stander jar包;这个例子是最基本的,当然spring mvc支持的注解还很多,包括视图解析器有xml 、velocity等,都可配置。


4. 异常情况:


1. nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config


引入以下jar,刷新

 <dependency>

           <groupId>taglibs</groupId>

           <artifactId>standard</artifactId>

           <version>1.1.2</version>

        </dependency>

       <dependency>

           <groupId>jstl</groupId>

           <artifactId>jstl</artifactId>

           <version>1.2</version>

       </dependency>


2. 可以请求到页面,但值(hello world) 没有显示,一般是优于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" >

这个默认把标签配置注释掉了,换成以下即可:


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

<web-app version="2.5"
         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">


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值