SpringMVC示例

先看一个SpringMVC的HelloWorld

SpringMVC传统的控制器开发方式是实现Controller接口,Spring2.5开始,提供了注解类型的开发方式,比前者更好。本文分别介绍了2种方式。

基于Controller接口的方式

首先熟悉几个概念
DispatcherServlet:
SpringMVC提供了org.springframework.web.servlet.DispatcherServlet作为Servlet。通过一个额外的xml文件来控制。
Controller接口:
请求通过DispatcherServlet分发给对应的处理的Java类(SpringMVC中称为Handle)。该类应该实现org.springframework.web.servlet.mvc.Controller接口,该接口必须实现一个方法,签名如下

ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception

接下来演示基于Controller接口的例子
1.导入必要的jar文件。
2.配置web.xml文件

<?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_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <!--加载DispatcherServlet-->
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>

        <!--contextConfigLocation是参数名称,它的值为SpringMVC配置文件的路径。
        若不配置它,则Spring默认到/WEB-INF/文件夹下查找[servlet-name]-servlet.xml文件
        SpringMVC根据该xml文件创建一个WebApplicationContext容器,
        类似Spring的ApplicationContext容器,开发者可以使用Spring的各种功能-->
        <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>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3.配置SpringMVC的配置文件(/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">
    <bean name="/hello" class="controller.HelloController"/>
</beans>

可见,与Spring的配置文件类似,它描述了一个bean,对应的类为controller文件夹下的HelloController类。

4.Controller类的实现(/controller/HelloController)

package controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloController implements Controller
{
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception
    {
        ModelAndView mv = new ModelAndView();
        mv.addObject("message","HelloWorld");
        mv.setViewName("/WEB-INF/content/welcome.jsp");
        return mv;
    }
}

5.View页面(/WEB-INF/content/welcome.jsp)

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

<!--body中使用了EL表达式-->

<body>
${requestScope.message}
</body>
</html>

部署Web应用后,在浏览器中输入URL来测试

http://localhost:8080/hello

显示出welcome页面,SpringMVC访问成功。

基于注解的控制器

只需要修改3、4两步的文件即可
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"
       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">
    <!--这里不再需要描述bean,而是扫描controller文件夹,查找其中所有基于注解的类-->
    <context:component-scan base-package="controller"/>
</beans>

HelloController:

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

<!--使用@Controller注解,无需实现接口,可以同时处理多个请求-->
@Controller
public class HelloController
{
    <!--通过@RequestMapping映射"/hello"-->
    @RequestMapping(value = "/hello")
    <!--hello是普通方法,不再继承自Controller接口-->
    public ModelAndView hello()
    {
        ModelAndView mv = new ModelAndView();
        mv.addObject("message","HelloWorld");
        mv.setViewName("/WEB-INF/content/welcome.jsp");
        return mv;
    }
}

总结

SpringMVC开发流程
1.在web.xml文件中定义前端控制器DispatcherServlet来拦截用户请求。
2.若要用Post方式提交请求,则编写包含表单数据的jsp页面。
3.定义处理用户请求的类。
4.通过spring的xml配置文件:描述该类(基于Controller接口的情况)或者扫描指定包下所有的基于注解的类。
5.编写视图页面。
6.enjoy it. :)

与传统的servlet+Jsp模式相比,SpringMVC是在web.xml文件和控制类中间加入了DispatcherServlet和Spring配置文件,从而将Spring引入到服务器端的程序,接下来像Spring一样,运行时根据配置文件来生成容器、再自动通过反射机制实例化bean……

当然SpringMVC的作用远不仅如此,本文只是一个入门的引导。

(萌新一枚,难免有错误或疏漏,欢迎指正)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值