springmvc入门例子(AbstractCommandController)
2014-08-07 15:10
609 查看
由于最近看spring方面的书籍,其中介绍了springmvc框架,先试了下spring官方给的例子,但是感觉不是很易懂,所以我就了个小例子
首先实现的是用户登录,并在另外个页面显示用户名和密码
一、首先新建个web项目,创建实体User.导入需要的jar包(jar可以参考官方给的文档)可以参考官网,有详细的jar名称和包所在位置。
User实体包含两个属性username和password,添加get/set方法.
First create a
Then, from the Spring distribution, copy
and
to the new
to the
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
with
框架自动调用,在这个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
首先实现的是用户登录,并在另外个页面显示用户名和密码
一、首先新建个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
相关文章推荐
- Spring MVC 之 AbstractCommandController
- SpringMVC入门例子
- springMVC源码分析--AbstractControllerUrlHandlerMapping(六)
- SpringMVC第一个入门例子
- 继承AbstractCommandController的Action
- 浅谈SpringMVC中的AbstractWizardFormController
- SpringMVC笔记系列(1)——用一个例子帮你入门
- Spring MVC(四)封装表单参数的控制器(AbstractCommandController)
- SpringMVC4.x源码分析(一):SpringMVC入门例子
- springMvc入门Demo例子
- springmvc入门小例子
- SpringMVC学习笔记---AbstractWizardFormController
- springMVC源码分析--AbstractControllerUrlHandlerMapping(六)
- springMVC3.2+Hibernate4+freemarker入门简单小例子,适合初学者
- Spring MVC 之 AbstractCommandController
- 秀外慧中的springMVC(一)---springMVC的xml配置入门例子
- SpringMVC 4.1.6 @RestController实例入门
- springmvc 第一个入门例子
- springMVC源码分析--AbstractControllerUrlHandlerMapping(六)