读书人

SpringMVC入门范例

发布时间: 2013-07-25 16:22:17 作者: rapoo

SpringMVC入门实例
昨天调试了半下午也没有调出的SpringMVC,今天下午继续调试,终于跑通了。SpringMVC具有很多Struts2不具备的有点,目前来说我知道的地方就是非侵入式,而struts2是侵入式的。
与struts2相比,Spring将对象细分成了更多不同的角色。控制器( Controller)、可选的命令对象(Command Object)或表单对象(Form Object), 以及传递到视图的模型(Model)。
下面重点说下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" 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" 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.


读书人网 >VC/MFC

热点推荐