控制器(Controller):负责处理由DispatherServlet分发的请求,它把用户请求的数据经过业务处理层之后封装成一个model,然后再把该Model返回给对应的View进行展示。(这里采用非注解地方式来了解springmvc中的控制器)
springmvc提供多种控制器:
1.AbstractController,最简单的控制器。
继承AbstractController,实现handleRequestInternal方法即可。
2.SimpleFormController
参数Object formbean其实他就是和表单属性打交道的一个对象,也即是说表单参数会依据一定的规则填充给form对象。
(1).继承SimpleFormController类;
(2).构造器中调用setCommandClass方法绑定命令对象(这里时user类);
(3).转换formbean为User类进行业务逻辑操作。
下面来看一个简单的例子:
前端jsp代码:
------------------SimpleFormController------------------------
<form action="simple" method="post">
username:<input name="name"/><br>
age:<input name="age"/><br>
<input type="submit" value="提交" />
</form>
为一个简单的表单,下面时
springmvc
的配置文件中的代码:
<!-- 配置beanNameUrlHandlerMapping -->
<bean id="beanNameUrlHandlerMapping"
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<!-- 设置优先级,值越小,优先级越高 -->
<property name="order" value="1"></property>
</bean>
<!-- 对于不需要处理只需要做一个转发可以用下面方式实现 -->
<bean name="/index"
class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<!-- 简单的返回视图名,通过viewName的value值login直接调用视图解析器,转发到login.jsp -->
<property name="viewName" value="index"></property>
</bean>
<bean name="/simple" class="com.springmvc.controllers.SimpleCotroller"></bean>
<!-- 视图解析器 -->
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
接着写对应
simple
请求的一个
controller
:
public class SimpleCotroller extends SimpleFormController {
public SimpleCotroller() {
//设置formBean的类型
setCommandClass(User.class);
}
@Override
protected ModelAndView onSubmit(Object command) throws Exception {
//获取传入的参数对应的formbean
User user = (User) command;
System.out.println(user);
ModelAndView mav = new ModelAndView();
//设置view
mav.setViewName("simple");
//设置model
mav.addObject("user",user);
return mav;
}
}
U
ser
对象中只包含两个属性:
String name
和
int age.提供他们的set和get方法
实现的效果:
点击提交后,显示到前台页面:
这里插入一下前台的取值方式:
<h1>user:${user.name}</h1>
<h1>age:${user.age}</h1>