SSH學習2:Spring 控制器

1.訪問頁面:

(1)命令控制器訪問界面

<%@page contentType="text/html;charset=UTF-8"%>
<html>
<head><title>Spring Command Test</title></head>
<body>
	<form name="command" action="command.do" method="post">
		INPUT:<input type="text" name="command" value=""/><br>
		<input type="submit" value="submit"/>
	</form>
</body>
</html>

(2)表單控制器訪問界面

<%@page contentType="text/html;charset=UTF-8"%>
<html>
<head><title>Spring Command Test</title></head>
<body>
	<form name="command" action="form.do" method="post">
		INPUT:<input type="text" name="command" value=""/><br>
		<input type="submit" value="submit"/>
	</form>
</body>
</html>

(3)多動作控制器訪問界面

<%@page contentType="text/html;charset=UTF-8"%>
<html>
<head><title>Spring Command Test</title></head>
<body>
	<form name="multi" action="multiAction.do" method="post">
		INPUT:<input type="text" name="multiAction" value=""/><br>
		<input type="submit" name="method" value="insert"/>
		<input type="submit" name="method" value="update"/>
		<input type="submit" name="method" value="delete"/>
	</form>
</body>
</html>

2.web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <!-- display-name></display-name-->

<filter>
    <filter-name>Character Encoding</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>Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
  <!-- 定義名爲springtest3的servlet,其指向剛纔寫的springtest.xml文件 -->
  <servlet>
        <servlet-name>springtest3</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
        	<param-name>contextConfigLocation</param-name>
        	<param-value>/WEB-INF/springtest.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
       <!-- 將所有.do的訪問,都交給springtest3這個servlet來處理 -->
        <servlet-name>springtest3</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>



</web-app>

3.spring 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!--  beans-->
<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.xsd">
	<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="helloworld.do">HelloWorldController</prop>
				<!-- 命令控制器 -->
				<prop key="command.do">CommandController</prop>
				<!-- 表單控制器 -->
				<prop key="form.do">FormController</prop>
				<!-- 多動作控制器 -->
				<prop key="multiAction.do">MultiActionController</prop>
			</props>
		</property>
	</bean>

    <!-- ViewResolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/>
    </bean>

    <!-- 處理器 HelloWorldController,標記處理類爲剛纔寫好的HelloWorldController.java文件,
    	並將兩個屬性賦值,helloworld屬性爲“HelloWorld1”,viewPage爲剛纔寫的index.jsp文件。-->
    <bean name="HelloWorldController" class="com.zf.ssh.test.controller.HelloWorldController">
    		<property name="helloworld">
    			<value>HelloWorld1</value>
    		</property>
    		<property name="viewPage">
    			<value>index.jsp</value>
    		</property>

    </bean>

	<!-- 命令控制器 -->
    <bean name="CommandController" class="com.zf.ssh.test.controller.CommandController">
    		<property name="commandClass">
    			<value>com.zf.ssh.test.Command</value>
    		</property>
    		<property name="viewPage">
    			<value>commandOutput.jsp</value>
    		</property>
    </bean>

	<!-- 表單控制器 -->
	<bean name="FormController" class="com.zf.ssh.test.controller.FormController">
		<property name="commandClass">
    			<value>com.zf.ssh.test.Command</value>
    		</property>
    		<property name="viewPage">
    			<value>formOutput.jsp</value>
    		</property>
    </bean>

	<!-- 多動作控制器 -->
	<bean name="MultiActionController" class="com.zf.ssh.test.controller.MultiActionController">
    		<property name="methodNameResolver">
    			<ref bean="paraMethodResolver"/>
    		</property>
    		<property name="viewPage">
    			<value>multiActionOutput.jsp</value>
    		</property>
    </bean>
    <bean id="paraMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
    		<property name="paramName"><value>method</value></property>
    </bean>

</beans>

4. 控制器實現

(1)命令控制器

package com.zf.ssh.test.controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.BaseCommandController;

import com.zf.ssh.test.Command;

public class CommandController extends BaseCommandController
{

	private String viewPage;

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception
	{
		// create bean.
		Object commandObject = getCommand(arg0);

		bindAndValidate(arg0, commandObject);

		Command command = (Command) commandObject;

		Map<String, String> modeMap = new HashMap<String, String>();
		modeMap.put("command", command.getCommand());
		return new ModelAndView(getViewPage(), modeMap);
	}

	public String getViewPage()
	{
		return viewPage;
	}

	public void setViewPage(String viewPage)
	{
		this.viewPage = viewPage;
	}

}

(2)表單控制器

package com.zf.ssh.test.controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import com.zf.ssh.test.Command;

public class FormController extends SimpleFormController
{
	private String viewPage;

	public String getViewPage()
	{
		return viewPage;
	}

	public void setViewPage(String viewPage)
	{
		this.viewPage = viewPage;
	}

	public ModelAndView onSubmit(Object command)
	{
		Command content = (Command) command;
		Map<String, String> modelMap = new HashMap<String, String>();

		modelMap.put("form", content.getCommand());

		return new ModelAndView(getViewPage(), modelMap);
	}
}

(3)多動作控制器

package com.zf.ssh.test.controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

public class MultiActionController extends org.springframework.web.servlet.mvc.multiaction.MultiActionController
{
	private String viewPage;

	public String getViewPage()
	{
		return viewPage;
	}

	public void setViewPage(String viewPage)
	{
		this.viewPage = viewPage;
	}

	public ModelAndView insert(HttpServletRequest req, HttpServletResponse res)
	{
		String content = (String) req.getParameter("multiAction");
		Map<String, String> modelMap = new HashMap<String, String>();
		modelMap.put("multiAction", "INSERT: " + content);
		return new ModelAndView(getViewPage(), modelMap);
	}

	public ModelAndView update(HttpServletRequest req, HttpServletResponse res)
	{
		String content = (String) req.getParameter("multiAction");
		Map<String, String> modelMap = new HashMap<String, String>();
		modelMap.put("multiAction", "UPDATE: " + content);
		return new ModelAndView(getViewPage(), modelMap);
	}

	public ModelAndView delete(HttpServletRequest req, HttpServletResponse res)
	{
		String content = (String) req.getParameter("multiAction");
		Map<String, String> modelMap = new HashMap<String, String>();
		modelMap.put("multiAction", "DELETE: " + content);
		return new ModelAndView(getViewPage(), modelMap);
	}
}

5.數據類

package com.zf.ssh.test;

public class Command
{
	private String command;

	public String getCommand()
	{
		return command;
	}

	public void setCommand(String command)
	{
		this.command = command;
	}

}


發佈了62 篇原創文章 · 獲贊 138 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章