SpringMVC_chapter2 常用控制器详解

1、直接实现Controller 接口或AbstractController抽象类(一些常用的简单的功能操作控制器)
(详细看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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值