1、直接实现Controller 接口或AbstractController抽象类(一些常用的简单的功能操作控制器)
(详细看SpringMVC_chapter1)
3、CommondController 表单提交封装参数
(详细看SpringMVC_chapter1)
2、ParameterizableViewController, UrlFilenameViewController 用于直接跳转页面(只需在xml中配置即可)
参数化控制器
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="login.htm">loginController</prop>
</props>
</property>
</bean>
<!-- 用于直接跳转页面 参数化控制器(参数为视图名 value 具体逻辑视图名称)-->
<bean id="loginController" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="login"/>
</bean>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<!-- jstlView -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="WEB-INF/login/"/>
<property name="suffix" value=".jsp"/>
</bean>
地址栏输入:
http://localhost:8080/SpringMVC_chapter2/login.htm
UrlFilenameViewController 当使用请求名 跟逻辑视图名一致时,可是使用跟简单的UrlFilenameViewController控制器
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="login.htm">loginController</prop>
</props>
</property>
</bean>
<!-- 使用urlFilenameViewController 控制器 -->
<bean name="loginController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<!-- jstlView -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="WEB-INF/login/"/>
<property name="suffix" value=".jsp"/>
</bean>
3、CommondController 表单提交封装参数
实体:
package com.test.bean;
public class Emp {
//实体
private String name;
private String phone;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Emp [name=" + name + ", phone=" + phone + "]";
}
}
表单封装控制器:
package com.tset.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import com.test.bean.Emp;
public class EmpController extends AbstractCommandController {
//AbstractCommandController 过期的 是因为Spring3.0后支持用注解
@Override
protected ModelAndView handle(HttpServletRequest request,
HttpServletResponse response, Object object, BindException bindException)
throws Exception {
//自动封装(chapter2-servlet 中配置)
Emp emp=(Emp)object;
System.out.println(emp);
request.setAttribute("emp", emp);
return new ModelAndView("showemp");
}
}
chapter2-servlet.xml控制器
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!-- 添加页面 -->
<prop key="emp_add.htm">emp_add</prop>
<!-- 表单提交请求 -->
<prop key="emp_request.htm">empControllerCommand</prop>
</props>
</property>
</bean>
<!-- 使用urlFilenameViewController 控制器 -->
<bean name="emp_add" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>
<!-- 实例化控制器 -->
<bean name="empControllerCommand" class="com.tset.controller.EmpController">
<!-- 指定类别 name 转换类别 value 指定转换类 -->
<property name="commandClass" value="com.test.bean.Emp" />
</bean>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<!-- jstlView -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="WEB-INF/addemp/"/>
<property name="suffix" value=".jsp"/>
</bean>
web.xml中配置过滤器(字符)
<!-- sping中文处理 使用SpringMVC中文过滤器-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
emp_add.jsp页面代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="emp_request.htm" method="post">
name:<input type="text" name="name">
<br/>
iphone:<input type="text" name="phone">
<br/>
<input type="submit" value="submit">
</form>
</body>
</html>
showemp.jsp页面代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${emp.name}:
${emp.phone}
</body>
</html>