springmvc入门例子(AbstractCommandController)
来源:互联网 发布:日本 首都 知乎 编辑:程序博客网 时间:2024/05/01 10:51
由于最近看spring方面的书籍,其中介绍了springmvc框架,先试了下spring官方给的例子,但是感觉不是很易懂,所以我就了个小例子
首先实现的是用户登录,并在另外个页面显示用户名和密码
一、首先新建个web项目,创建实体User.导入需要的jar包(jar可以参考官方给的文档)可以参考官网,有详细的jar名称和包所在位置。
User实体包含两个属性username和password,添加get/set方法.
First create a 'lib'
directory in the 'war/WEB-INF'
directory. Then, from the Spring distribution, copy spring.jar
(from spring-framework-2.5/dist
) and spring-webmvc.jar
(from spring-framework-2.5/dist/modules
) to the new 'war/WEB-INF/lib'
directory. Also, copy commons-logging.jar
(from spring-framework-2.5/lib/jakarta-commons
) to the 'war/WEB-INF/lib'
directory. These jars will be deployed to the server and they are also used during the build process.
二、修改web.xml
按照官方API,在web.xml中添加springmvc的命名空间,并配置springmvc的核心控制器DispatchServlet,并让该类在项目启动时加载,配置如下
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
(注意:本例中url-pattern定义格式为.htm,则说明所有请求后缀为.htm的都会被DispatchServlet拦截)
三、在web.xml同级目(WEB-INF)下创建springapp-servlet.xml。
创建的这个xml名称取决于web.xml中配置的<servlet-name>springapp</servlet-name>,两者需要保持一致(The name of this file is determined by the value of the <servlet-name/>
element from the 'web.xml'
, with '-servlet'
appended to it (hence 'springapp-servlet.xml'
))。该xml将会被springmvc 框架自动调用,在这个xml中将会定义一些DispatchServlet需要调用bean.
在springapp-servlet.xml定义处理登录需要的bean对象,内容如下。
<?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-2.5.xsd">
<bean name="/login.htm" class="com.huansoo.controller.LoginController">
<property name="page" value="user"></property><!-- 注入属性值,用户登录成功后,返回查看用户用户和密码时使用 -->
</bean><!-- springmvc framework提供的解析视图的资源工具,此项也可不配置,下文将会详细说明 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property><!--视图前缀-->
<property name="suffix" value=".jsp"></property><!--视图后缀-->
</bean>
</beans>
四、index.jsp中写两个form元素,
<form action="login.htm" method="post">
用户名:<input name="username" type="text"/></br>
密码<input name="password" type="password"></br>
<input type="submit" value="登录">
</form>
当点击“登录”时,会访问login.htm,改请求会被DispatchServlet拦截。DispatchServlet会去springapp-servlet.xml查找该请求对应的控制器即com.huansoo.controller.LoginController这个类,会默认访问实例中的ModelAndView方法,在这个方法中做逻辑处理然后返回ModelAndView。代码如下
public class LoginController extends AbstractCommandController{
private String page;
public LoginController(){
super.setCommandClass(User.class);//此句是必须,否则会报错(Cannot create command without commandClass being),作用是将jsp表单中属性绑定到表单对象中.当然如果在LoginController 中配置了<property name="commandClass" value="comand.User">时,此句无需再写
}
@Override
protected ModelAndView handle(HttpServletRequest req,
HttpServletResponse res, Object command, BindException errors)
throws Exception {
User user = (User) command;
List list = new ArrayList();
list.add(0, user.getUsername());
list.add(1, user.getPassword());
return new ModelAndView(getPage(), "info", list);
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
}
代码中new ModelAndView(getPage(), "info", list)中的getPage()获取到的是springapp-servlet.xml中注入的值user,“info”是显示用户名和密码时,包含该用户名和密码的实体数组bean的名称,一会在user.jsp中会看到。
如果上面springapp-servlet.xml没有注入<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">,
此时返回的应该是return new ModelAndView("/WEB-INF/jsp/user.jsp", "info", list),工具InternalResourceViewResolver为了方便灵活配置,将“/WEB-INF/jsp/user.jsp”分为三部分,第一部分,就是前缀即prefix,第二部分是真正的jsp名称user,第三部分是要跳转的页面后缀jsp。
user.jsp中内容如下。
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="60%" style="font-size: 14px;font-weight: bold">用户名:</td>
<td>${info[0]}</td>
</tr>
<tr>
<td width="60%" style="font-size: 14px;font-weight: bold">密 码:</td>
<td>${info[1]}</td>
</tr>
</table>
好了,简单的springmvc小例子就完成了。需要该例子源码的可以去我的百度网盘下载,http://pan.baidu.com/s/1c07v81U
- springmvc入门例子(AbstractCommandController)
- SpringMVC—AbstractCommandController控制器
- SpringMVC基础入门 springmvc例子
- SpringMVC入门例子
- springmvc入门小例子
- SpringMVC入门例子
- 1. SpringMVC 入门例子
- eclipse+springmvc入门小例子
- SpringMVC第一个入门例子
- Spring mvc (二) [Springmvc 继承AbstractCommandController配合formbean]
- SpringMVC的两个简单入门的例子(-)
- 秀外慧中的springMVC(一)---springMVC的xml配置入门例子
- SpringMVC笔记系列(1)——用一个例子帮你入门
- SpringMVC简单例子(一)
- SpringMVC简单例子(二)
- SpringMVC入门(一)
- springMVC入门(三)
- springMVC入门(二)
- LG的Optimus 3D预订构建多任务手机
- LG擎天柱540亿吨
- Alfresco中Search In Folder功能(在指定文件夹下搜索文件)
- ASP从零开始学习笔记(一)
- 添加引导页 (引导页的图片根据网络请求获取,张数不一定)
- springmvc入门例子(AbstractCommandController)
- 10招教您做好B2B行业网站产品经理
- 大数据时代,智能搜索懂你心
- ubuntu下memcached的安装
- Android 选择文件上传
- VisualSvn Server介绍
- Java使用LdAP获取AD域用户
- iOS应用程序性能的提示和技巧
- Kindle Fire的评论超越电子书