IDEA搭建我的第一个Spring MVC应用(附使用注解实现)
Posted 郭文睿的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA搭建我的第一个Spring MVC应用(附使用注解实现)相关的知识,希望对你有一定的参考价值。
新建项目
File——New——Project
Next
这里任意填写。
Finish
配置项目
配置前端控制器 DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>
<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_4_0.xsd"
version="4.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--定义Spring MVC前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--让Spring MVC的前端控制器拦截所有请求-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
配置Spring MVC的Controller
在WEB-INF下新建springmvc-config.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置Handle,映射"/hello"请求-->
<bean name="/hello" class="com.wen.controller.HelloController"/>
<!--处理映射器将bean的name作为url进行查找,需要在配置Handle是指定name(即url)-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--SimpleControllerHandlerAdapter是一个处理器适配器,所有处理适配器都有实现HandlerAdapter-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
<!--在Spring4.0后,可以不配置处理映射器、处理器适配器和视图解析器,也可以完成Spring内部MVC工作-->
</beans>
新建HelloController.java
package com.wen.controller;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
/**
* 实现Controller接口的控制器,用来处理hello请求
* 可以处理一个单一的请求动作
*/
public class HelloController implements Controller {
private static final Log logger = LogFactory.getLog(HelloController.class);
/**
* handleRequest是Controller接口必须实现的方法
*/
@Override
public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
logger.info("handleRequest被调用");
//创建预返回的ModelView对象
ModelAndView mv =new ModelAndView();
//添加模型数据
mv.addObject("message","HelloWorld");
//逻辑视图名
mv.setViewName("/WEB-INF/pages/welcome.jsp");
//返回对象、模型数据、视图名
return mv;
}
}
新建welcome.jsp,使用EL表达式用来接受Controller传递的message
<%--
Created by IntelliJ IDEA.
User: wen
Date: 2019/1/27
Time: 22:08
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Welcome</title>
</head>
<body>
${requestScope.message}
</body>
</html>
测试应用
Tips:使用MVC框架应该严格遵守MVC思想。MVC框架不赞成浏览器直接访问Web应用的视图页面,用户的所有请求都只应向控制器发送,由控制器调用模型组件、视图组件向用户呈现数据,即指向视图层。
基于注解的控制器
使用注解大大的提供了我们的开发效率,但是了解一点原始的配置,才能更好的了解他们的运行流程。
我们只需要修改两个地方~
1、Controller
我们不用需要Controller接口,改成使用注解来描述。用来处理/hello请求。
package com.wen.controller;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/**
* 基于注解的控制器
* 可以同时处理多个请求动作,并且无需实现任何接口
* org.springframework.stereotype.Controller 注解用于指示该类是一个控制器
*/
@Controller
public class HelloController {
private static final Log logger= LogFactory.getLog(HelloController.class);
@RequestMapping(value = "/hello")
public ModelAndView hello(){
logger.info("hello方法被调用");
ModelAndView mv =new ModelAndView();
mv.addObject("message","Hello World");
mv.setViewName("/WEB-INF/pages/welcome.jsp");
return mv;
}
}
2、修改Spring MVC的配置文件
<?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"
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">
<!--spring可以自动去扫描base-pack下面的包或者子包下面的java文件-->
<context:component-scan base-package="com.wen.controller"/>
<!--配置annotation类型的处理映射器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!--配置annotation类型的处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
<!--在Spring4.0后,可以不配置处理映射器、处理器适配器和视图解析器,也可以完成Spring内部MVC工作-->
</beans>
测试应用
End~
以上是关于IDEA搭建我的第一个Spring MVC应用(附使用注解实现)的主要内容,如果未能解决你的问题,请参考以下文章
idea搭建ssm(Spring+Spring Mvc+Mybatis)
IDEA 2018 搭建 Spring MVC helloworld
环境配置——IDEA搭建maven+spring mvc开发环境