`

SpringMVC入门实例

阅读更多
    昨天调试了半下午也没有调出的SpringMVC,今天下午继续调试,终于跑通了。SpringMVC具有很多Struts2不具备的有点,目前来说我知道的地方就是非侵入式,低耦合。
    与struts2相比,Spring将对象细分成了更多不同的角色。控制器( Controller)、可选的命令对象(Command Object)或表单对象(Form Object), 以及传递到视图的模型(Model),而且粒度更细,为方法级,而struts2为类级,在Struts2中,后面接受的参数均为成员边栏,也就是说除了execute方法外,类中的其他方法也可以对该变量进行调用,这其实是不合理的,而在springMVC中就不会存在这样的问题,可以直接使用注解,从而将参数直接赋值给对应的方法,这样一来安全性更好,而且Struts通过的是Filter过滤,而Spring是Servlet,有牛人对SpringMVC和Struts2MVC的性能进行了测试,测试结果显示,SpringMVC的性能要好于Struts2MVC的性能。
    下面重点说下springMVC的运行流程,程序是在DispacherServlet中运行的
    request->HanderlerMapping(相当于struts2中的配置文件)->Controller(相当于struts2中的Action,但是要比Action更简洁,非侵入式,对html表单传送的数据无需写相应的成员变量)->ModelAndView(给出指定的页面名,也可以返回一些参数对象)->response
   首先,建立建立一个Web工程,工程名为SpringMVC,加入jar包,springMVC需要的jar包有以下几个(我这里使用的是spring2.5),
                 1.commons-loggin-1.0.4.jar
                 2.spring.jar
                 3.spring-webmvc.jar。
   工程建好后,第一步,配置web.xml文件,如下:
web.xml:
<?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">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  <servlet-name>SpringMVC</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:spring-schema.xml</param-value>
  </init-param>
  </servlet>
  <servlet-mapping>
  <servlet-name>SpringMVC</servlet-name>
  <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app> 
第二步,写界面,WebRoot下建立jsp文件夹,在jsp文件夹中建立两个jsp界面,login.jsp和welcome.jsp,并修改index.jsp,界面如下:
login.jsp:
<%@ page language="java" import="java.util.*" isELIgnored="false" pageEncoding="utf8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>login</title>
  </head>
 
  <body>
  <h4>登录操作</h4>
  <h3><font color="red">${error }</font></h3>
    <form action="/springMVCDemo/login.do" method="post">
    <input type="text" name="name" id="name">
    <input type="password" name="password" id="password">
    <input type="submit" value="登录">
    </form>
  </body>
</html>
welcome.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>welcome</title>
  </head>
 
  <body>
    <h2>欢迎${user.name }登录</h2>
  </body>
</html>

index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
 
  <body>
    <a href="/springMVCDemo/toLogin.do">SpringMVC</a>
  </body>
</html>
第三步:编写bean和Controller
User.java
package com.bean;

public class User {
private String name;
private String password;

public User() {}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}


}

ToLoginAction
package com.action;

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

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

/**
* 跳转到登录页面
*
* @author XiaoYun 2013-07-18
*/
public class ToLoginAction implements Controller {

public ModelAndView handleRequest(HttpServletRequest req,
HttpServletResponse res) throws Exception {
ModelAndView model = new ModelAndView("login");
return model;
}

}

LoginAction
package com.action;

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

import org.springframework.ui.ModelMap;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import com.bean.User;

/**
* 登录处理逻辑
*
* @author XiaoYun 2013-07-18
*/
public class LoginAction extends SimpleFormController{ //需要对前台的表单数据进行封装,故要继承SimpleFormController,继承哪一个Controller根据需要而定
@Override
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response,
Object command,//接受前台传来的表单参数值
BindException errors)
throws Exception {
User user = (User)command;
ModelMap modelMap = null;
if ("xiaoyun".equals(user.getName()) && "123".equals(user.getPassword())) {
modelMap = new ModelMap("user", user);
return new ModelAndView("welcome", modelMap);
}
modelMap = new ModelMap("error", "用户名或密码错误!");
return new ModelAndView("login", modelMap);
}
}

第四步,也是关键的一步,写后端控制器,包含处理器映射,视图解析器等
spring-schema.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
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-2.5.xsd
            http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-1.5.xsd">
    <!-- 配置控制器的映射 -->
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
    <props>
    <prop key="login.do">loginAction</prop>
    <prop key="toLogin.do">toLoginAction</prop>
    </props>
    </property>
    </bean>
    <!-- 配置视图 -->
    <!-- 视图扩展名解析器 对模型视图名称的解析,即给视图名称添加前缀和后缀 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
    <!-- 前缀 -->
    <property name="prefix" value="jsp/"></property>
        <!-- spring查找页面的方式为  前缀 + ModelAndView的名字(通过Controller返回) + 后缀 -->
    <!-- 后缀 -->
    <property name="suffix" value=".jsp"></property>
    </bean>
   
    <!-- Action -->
    <!-- 登录验证 -->
    <bean id="loginAction" class="com.action.LoginAction">
    <!-- 工程中表单对应的pojo类 -->
    <property name="commandClass" value="com.bean.User"></property>   
    </bean>
    <!-- 跳转到登录页面 -->
    <bean id="toLoginAction" class="com.action.ToLoginAction"></bean>
       
</beans>

好,到现在为止,一个springMVC最基本,也是最简单的Demo就完成了,在本人的机器上运行OK,我的环境是JDK1.6,tomcat5.5。我也是刚刚入门,写的不好的地方还请多多指教,后期
会继续学习。欢迎跟我交流,我的邮箱是391720181@qq.com。
   附件中有该工程需要的jar包,需要的下载下来就能用了。

谢谢
登录名和密码为xiaoyun和123.
      
  
  • 大小: 27.6 KB
分享到:
评论

相关推荐

    maven + springmvc 入门实例

    **二、SpringMVC入门** 1. **创建SpringMVC项目**: 使用Maven创建一个新的Maven项目,在`pom.xml`中添加SpringMVC相关的依赖,如`spring-webmvc`、`spring-context`、`jstl`等。 2. **配置SpringMVC**: 创建`web....

    Springmvc入门实例

    **Spring MVC 入门实例详解** Spring MVC 是一个基于 Java 的模型-视图-控制器(MVC)架构,是 Spring 框架的一部分,用于构建Web应用程序。它提供了丰富的功能,如请求处理、数据绑定、异常处理等,使得开发者能够...

    springmvc入门实例

    本入门实例旨在帮助开发者快速理解并掌握Spring MVC的基本概念和工作流程。 首先,Spring MVC的核心概念包括DispatcherServlet、Controller、Model、View和ViewResolver。DispatcherServlet是Spring MVC的前端控制...

    SpringMVC入门实例,手把手教你搭建项目

    以上就是关于SpringMVC入门实例的基础知识,包括SpringMVC的架构、搭建步骤、核心组件以及常用注解。通过实践这些知识点,你可以快速上手SpringMVC,构建出功能完备的Web应用程序。提供的jar和项目源码可以帮助你更...

    springMVC入门实例

    在这个入门实例中,我们将深入理解SpringMVC的核心概念,以及如何通过`springmvc_demo_02`这个项目来创建一个简单的应用。 1. **SpringMVC架构** SpringMVC由几个关键组件组成:DispatcherServlet、Controller、...

    Maven+SpringMVC的入门级HelloWorld实例

    在IT行业中,Maven和SpringMVC是两个非常重要的组件,它们分别是项目管理和Web应用程序开发的核心...通过这个入门级的HelloWorld实例,我们可以快速理解这两个工具的基本用法,为进一步深入学习和实践打下坚实的基础。

    springmvc入门实例(注解)

    本入门实例将重点介绍如何使用注解来简化Spring MVC的配置,以便快速入门。Eclipse Dynamic Web工程是开发此类应用的常见环境。 首先,我们需要创建一个Eclipse Dynamic Web项目。在Eclipse中,选择"File" -&gt; "New...

    springmvc的入门例子

    这个入门例子是为初学者设计的,旨在帮助他们快速理解和上手Spring MVC。 首先,我们需要理解Spring MVC的基本组件: 1. **DispatcherServlet**:这是Spring MVC的核心组件,作为前端控制器接收所有的HTTP请求,并...

    SpringMVC入门实例及详细讲解

    Spring MVC 是 Spring 框架的一个重要组成部分,用于构建高效的、模块化的Web应用程序。它提供了一个灵活的MVC实现,允许开发者使用各种视图技术,包括JSP、Velocity、Tiles等,而不限制于特定的视图技术。...

    springMVC入门实例(员工系统-Mysql)代码简单易懂

    这个入门实例是一个基于Mysql数据库的员工管理系统,它涵盖了基础的CRUD(创建、读取、更新、删除)操作,并且涉及到实体类与数据库表之间的关联关系。 1. **SpringMVC架构**: SpringMVC通过DispatcherServlet...

    Spring MVC 入门实例

    这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...

    Spring MVC入门实例

    **Spring MVC 入门实例详解** Spring MVC 是 Spring 框架的一个重要模块,用于构建 Web 应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者将业务逻辑、数据处理和用户界面分离,实现更加清晰的代码结构。...

Global site tag (gtag.js) - Google Analytics