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文件,如下:
[b]web.xml:[/b]
<?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,界面如下:
[b]login.jsp:[/b]
<%@ 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>
[b]welcome.jsp[/b]
<%@ 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>

[b]index.jsp[/b]
<%@ 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
[b]User.java[/b]
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;
}


}

[b]ToLoginAction[/b]
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;
}

}

[b]LoginAction[/b]
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);
}
}

第四步,也是关键的一步,写后端控制器,包含处理器映射,视图解析器等
[b]spring-schema.xml[/b]
<?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。
[b] 附件中有该工程需要的jar包,需要的下载下来就能用了。[/b]

谢谢
登录名和密码为xiaoyun和123.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值