SpringMVC示例

来源:互联网 发布:淘宝企业店铺有优势吗 编辑:程序博客网 时间:2024/06/07 00:21

先看一个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注解,无需实现接口,可以同时处理多个请求-->@Controllerpublic 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的作用远不仅如此,本文只是一个入门的引导。

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

原创粉丝点击