`
sharkl
  • 浏览: 40917 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类

Spring MVC实例

阅读更多

实现目标

编写一个ShirdrnController,实现了org.springframework.web.servlet.mvc.Controller接口;

使用JSP文件作为视图,将控制器返回的Model渲染出来,JSP文件中使用了JSTL;

使用InternalResourceViewResolver实现视图的解析。

准备工作

工程结构如下所示:

SpringMVCViewResolver
│ .classpath
│ .mymetadata
│ .project
│ .springBeans

├─.myeclipse
├─src
│ └─org
│      └─shirdrn
│          ├─beans
│          │      PersonBean.java
│          │
│          └─spring
│              └─controller
│                      ShirdrnController.java

└─WebRoot
    │ index.jsp
    │ persons.jsp
    │
    ├─META-INF
    │      MANIFEST.MF
    │
    └─WEB-INF
        │ c-1_0-rt.tld
        │ c-1_0.tld
        │ c.tld
        │ fmt-1_0-rt.tld
        │ fmt-1_0.tld
        │ fmt.tld
        │ fn.tld
        │ permittedTaglibs.tld
        │ scriptfree.tld
        │ shirdrn-servlet.xml
        │ spring.tld
        │ sql-1_0-rt.tld
        │ sql-1_0.tld
        │ sql.tld
        │ web.xml
        │ x-1_0-rt.tld
        │ x-1_0.tld
        │ x.tld
        │
        ├─classes
        │ └─org
        │      └─shirdrn
        │          ├─beans
        │          │      PersonBean.class
        │          │
        │          └─spring
        │              └─controller
        │                      ShirdrnController.class
        │
        └─lib
                commons-attributes-api.jar
                commons-attributes-compiler.jar
                commons-beanutils.jar
                commons-collections.jar
                commons-digester.jar
                commons-fileupload.jar
                commons-httpclient.jar
                commons-lang.jar
                commons-logging.jar
                cos.jar
                dom4j-1.6.jar
                freemarker.jar
                itext-1.3.jar
                jakarta-oro-2.0.8.jar
                jasperreports-1.0.3.jar
                jaxen-1.1-beta-4.jar
                jstl.jar
                jxl.jar
                log4j-1.2.13.jar
                poi-2.5.1.jar
                spring-beans.jar
                spring-context.jar
                spring-core.jar
                spring-web.jar
                spring-webmvc.jar
                standard.jar
                velocity-1.4.jar
                velocity-tools-generic-1.2.jar
                velocity-tools-view-1.2.jar

其中,PersonBean就是一个POJO,如下所示:

package org.shirdrn.beans;

import java.io.Serializable;
import java.util.Date;

public class PersonBean implements Serializable {
private Integer id;
private String name;
private String email;

public String getEmail() {
   return email;
}
public void setEmail(String email) {
   this.email = email;
}
public Integer getId() {
   return id;
}
public void setId(Integer id) {
   this.id = id;
}
public String getName() {
   return name;
}
public void setName(String name) {
   this.name = name;
}
}

实现过程

为了清晰,我按照步骤实现,如下所示:

第一步,注入List。

在该ShirdrnController控制器中使用Setter注入了一个PersonBean的List,作为Model,因此,首先要在 shirdrn-servlet.xml中注入PersonBean的List中的每一个Person,这里注入了3个bean,如下所示:

<bean id="personABean" class="org.shirdrn.beans.PersonBean"
   abstract="false" singleton="true" lazy-init="default"
   autowire="default" dependency-check="default">
   <property name="id">
    <value>1001</value>
   </property>
   <property name="name">
    <value>张叁</value>
   </property>
   <property name="email">
    <value>shirdrn@hotmail.com</value>
   </property>
</bean>

<bean id="personBBean" class="org.shirdrn.beans.PersonBean"
   abstract="false" singleton="true" lazy-init="default"
   autowire="default" dependency-check="default">
   <property name="id">
    <value>1002</value>
   </property>
   <property name="name">
    <value>王者</value>
   </property>
   <property name="email">
    <value>jamkk@hotmail.com</value>
   </property>
</bean>

<bean id="personCBean" class="org.shirdrn.beans.PersonBean"
   abstract="false" singleton="true" lazy-init="default"
   autowire="default" dependency-check="default">
   <property name="id">
    <value>1003</value>
   </property>
   <property name="name">
    <value>将军</value>
   </property>
   <property name="email">
    <value>general@hotmail.com</value>
   </property>
</bean>

将List注入到ShirdrnController中,在shirdrn-servlet.xml文件中配置如下:

<bean id="shirdrnController"
   class="org.shirdrn.spring.controller.ShirdrnController"
   abstract="false" singleton="true" lazy-init="default"
   autowire="default" dependency-check="default">
   <property name="personsBean">
    <list>
     <ref bean="personABean" />
     <ref bean="personBBean" />
     <ref bean="personCBean" />
     </list>
   </property>
</bean>

第二步,实现ShirdrnController,如下所示:

package org.shirdrn.spring.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class ShirdrnController implements Controller {

private List personsBean;

public List getPersonsBean() {
   return personsBean;
}

public void setPersonsBean(List personsBean) {
   this.personsBean = personsBean;
}

public ModelAndView handleRequest(HttpServletRequest arg0,
    HttpServletResponse arg1) throws Exception {
   return new ModelAndView("persons ","persons",getPersonsBean());
}
}

这里,返回了return new ModelAndView("persons ","persons",getPersonsBean());,其中,第一个“persons”是视图文件的名称,对应于JSP文件persons.jsp,第二个“persons”就是Model。一个PersonBean的List。

第三步,定义HandlerMapping,URL映射方式。

仍然使用SimpleUrlHandlerMapping映射方式,在shirdrn-servlet.xml文件中配置URL映射方式,如下所示:

<bean id="shirdrnUrlMapping"
   class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
   abstract="false" singleton="true" lazy-init="default"
   autowire="default" dependency-check="default">
   <property name="mappings">
    <props>
     <prop key="/shirdrn.xyz">shirdrnController</prop>
    </props>
   </property>
</bean>

当请求的URL为shirdrn.xyz的时候,使用控制器ShirdrnController进行控制转发,然后再交由中央控制器DispatcherServlet,选择合适的视图解析器,实现视图的派发。

第四步,配置视图解析器。

在shirdrn-servlet.xml文件中,配置视图解析器,如下所示:

<bean id="viewResolver"
   class="org.springframework.web.servlet.view.InternalResourceViewResolver"
   abstract="false" singleton="true" lazy-init="default"
   autowire="default" dependency-check="default">
   <property name="viewClass">
    <value>org.springframework.web.servlet.view.JstlView</value>
   </property>
   <property name="prefix">
    <value>/</value>
   </property>
   <property name="suffix">
    <value>.jsp</value>
   </property>
</bean>

bean为viewResolver,使用InternalResourceViewResolver视图解析器进行视图的解析。

这里的property的name很关键:

viewClass指定了选择何种视图技术,这里使用JSTL技术;

prefix是视图文件的前缀,即目录名,因为我们把persons.jsp放到了目录/WebRoot/之下,所以只需要配置一个“/”,如果放在目录/WebRoot/目录下的一个名称为view的目录中,这里prefix的值应该为/view/;

suffix是视图文件的后缀,即扩展名,如使用JSP文件,则为“.jsp”。

第五步,实现视图文件。

这里是用到了两个JSP文件,分别如下。

index.jsp文件,是一个中间转发页面,实现了定向,定向到/shirdrn.xyz:

<%@ page session="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core " %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt " %>
<%@ page language="java" pageEncoding="UTF-8"%>
<c:redirect url="/shirdrn.xyz"></c:redirect>

persons.jsp,实现视图的渲染,显示数据:

<%@ page session="false"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"% >
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt " %>
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>人员列表页面</title>
    <style type="text/css">
    body{
       font-size:16px;
       color:yellow;
    }
    </style>
</head>
<body bgcolor="#FFFFFF">
<table bgcolor="green" border="1" borderColor="#FFFFFF" align="center" width="100%">
   <tr>
    <td colspan="3"><b>人员列表如下</td>
   </tr>
   <tr>
    <td>ID</td><td>姓名</td><td>Email</td>
   </tr>
   <c:forEach items="${persons}" var="person">
    <tr>
     <td><c:out value="${person.id}" /></td>
     <td><c:out value="${person.name}" /></td>
     <td><c:out value="${person.email}" /></td>
    </tr>
   </c:forEach>
</table>
</body>
</html>

第六步,配置应用的web.xml文件。

在web.xml文件中配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee "
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd ">

<servlet>
    <servlet-name>shirdrn</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>shirdrn</servlet-name>
    <url-pattern>*.xyz</url-pattern>
</servlet-mapping>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

</web-app>

分享到:
评论

相关推荐

    spring mvc 实例

    在Spring MVC实例中,我们通常会遇到以下关键知识点: 1. **MVC架构**:MVC是一种设计模式,将应用分为三个主要部分:Model(模型)负责业务逻辑,View(视图)负责展示结果,Controller(控制器)处理用户请求并...

    Spring MVC 实例

    **Spring MVC 框架详解** Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)架构。Spring MVC 提供了灵活的处理机制,包括处理器映射、视图解析、数据绑定、本地...

    Spring Mvc实例

    总结来说,Spring MVC实例展示了如何通过注解驱动开发实现Web应用的路由控制、数据绑定、视图解析以及数据库操作。这个实例对于理解Spring MVC的工作原理和实际应用是非常有帮助的,也是Java Web开发者必备的技能之...

    Spring MVC实例 MVC注解配置

    Spring MVC 是一个强大的Java Web开发框架...综上所述,Spring MVC实例中的MVC注解配置大大简化了Web应用的开发流程,使得代码更加简洁、直观。通过熟练掌握这些知识点,开发者能够高效地构建出高质量的Java Web应用。

    学习Spring MVC,关于注解的Spring MVC,简单例子,关于控制器的Spring MVC,学习Spring,简单Spring MVC实例

    在Spring MVC实例中,通常会涉及到配置文件,如`spring-mvc.xml`,但现在更推荐使用Java配置。例如,你可以创建一个`WebConfig`类,然后使用`@Configuration`和`@EnableWebMvc`注解来启用Spring MVC: ```java @...

    Spring mvc 实例下载可运行

    在这个实例中,"Spring mvc 实例下载可运行" 提供了一个可以直接运行的Spring MVC项目,帮助开发者更好地理解和学习Spring MVC的实践操作。 1. **Spring MVC基本概念** - **模型(Model)**:存储业务数据的部分,...

    spring mvc实例

    总结来说,Spring MVC实例是一个绝佳的学习工具,它让你能够亲手实践MVC模式,理解Spring框架如何协调各个组件来处理Web请求。通过深入研究这个实例,你将掌握Spring MVC的核心概念,为今后的Web开发打下坚实的基础...

    Spring MVC实例的简单项目

    **Spring MVC 实例详解** Spring MVC 是 Spring 框架的一部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)框架。这个实例项目旨在帮助我们理解如何在实际开发中运用 Spring MVC。让我们深入探讨一下...

    spring mvc实例项目

    学习这个实例项目,你可以深入理解Spring MVC如何处理请求、如何与ExtJS2进行数据交互,以及如何利用Spring JDBC进行数据库操作。同时,它也展示了MVC模式在实际项目中的应用,有助于提升你对Web应用开发的整体理解...

    spring MVC 实例代码

    基于注解的spring mvc,dao 层注解:@Repository("userDao"), entity层注解:@Entity,service层注解:@Service("userService"), action层注解:@Controller("userController") @RequestMapping("/user.do")

    Spring MVC 实例(附带详细讲解)

    在本实例中,我们将深入理解Spring MVC的基本概念,以及如何在一个实际项目中运用它。 首先,Apache Tomcat 是一个广泛使用的开源Java Servlet容器,它实现了Servlet和JavaServer Pages (JSP) 规范,是搭建Spring ...

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

Global site tag (gtag.js) - Google Analytics