首页 > 开发 > Java > 正文

SpringMVC编程使用Controller接口实现控制器实例代码

2024-07-13 10:13:51
字体:
来源:转载
供稿:网友

Controller简介

Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分:

1、收集、验证请求参数并绑定到命令对象;

2、将命令对象交给业务对象,由业务对象处理并返回模型数据;

3、返回ModelAndView(Model部分是业务对象返回的模型数据,视图部分为逻辑视图名)。

DispatcherServlet,主要负责整体的控制流程的调度部分:

1、负责将请求委托给控制器进行处理;

2、根据控制器返回的逻辑视图名选择具体的视图进行渲染(并把模型数据传入)。

因此MVC中完整的C(包含控制逻辑+功能处理)由(DispatcherServlet+Controller)组成。

因此此处的控制器是WebMVC中部分,也可以称为页面控制器、动作、处理器。

之前用注解的方式实现了控制器,现在换了一种,通过实现了Controller接口的Controller类来实现处理请求的作用。

主要包括:XML配置文件,Java普通类,Javaform类,Controller类,和JSP界面

1.首先是XML配置文件,包括了web.xml和springmvc-servlet.xml。代码如下:

1)web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <servlet>   <servlet-name>springmvc</servlet-name>   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>   <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>   <servlet-name>springmvc</servlet-name>   <url-pattern>/</url-pattern>  </servlet-mapping> </web-app> 

2)springmvc-servlet,默认方式的DispatcherServlet配置。

<?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-3.0.xsd">      <bean name="/product_input.action" class="controller.InputProductController" />   <bean name="/product_save.action" class="controller.SaveProductController" />    <bean id="viewResolver"     class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="prefix" value="/WEB-INF/jsp/" />    <property name="suffix" value=".jsp" />   </bean> </beans> 

2.Controller类,包括两个,一个用于打开首页,一个用于处理用户输入并返回

1)InputProductController.java

package controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;public class InputProductController implements Controller{	private static final Log logger = LogFactory.getLog(InputProductController.class);	@Override 	  public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {		logger.info("InputProductController called");		return new ModelAndView("ProductForm");	}}

2)SaveProductController.java,保存用户输入的Product信息并返回

package controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;import domain.Product;import form.ProductForm;public class SaveProductController implements Controller{	private static final Log logger = LogFactory.getLog(SaveProductController.class);	@Override 	  public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {		logger.info("SaveProductController called");		ProductForm productForm = new ProductForm();		//product action properties 		productForm.setName(request.getParameter("name"));		productForm.setDescription(request.getParameter("description"));		productForm.setPrice(request.getParameter("price"));		//create model 		Product product = new Product();		product.setName(productForm.getName());		product.setDescription(productForm.getDescription());		try {			product.setPrice( 			          float.parsefloat(productForm.getPrice()));		}		catch(NumberFormatException e) {		}		//insert code to save Product 		System.out.println("返回视图");		return new ModelAndView("ProductDetails","product",product);	}}

3.JSP界面,包括两个,ProductForm和ProductDetails

1)ProductForm.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>  <div id="global"> <form action="product_save.action" method="post">  <fieldset>   <legend>Add a product</legend>   <label for="name">Product Name: </label>   <input type="text" id="name" name="name" value="" tabindex="1">   <label for="description">Description: </label>   <input type="text" id="description" name="description" tabindex="2">   <label for="price">Price: </label>   <input type="text" id="price" name="price" tabindex="3">   <div id="buttons">    <label for="dummy"></label>    <input id="reset" type="reset" tabindex="4">    <input id="submit" type="submit" tabindex="5" value="Add Product">   </div>  </fieldset> </form> </div>  </body> </html> 

2)ProductDetails.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> <div id="global">  <h4>The product has been saved.</h4>  <p>    <h5>Details:</h5>    Product Name: ${product.name} <br />    Description: ${product.description}<br />    Price: $${product.price}  </p> </div> </body> </html> 

好了,代码部分已经齐全了,启动server之后,输入URL:http://localhost:8080/SpringSimple/product_input.action;就可以看到首页了。

注:配置文件和Controller类返回的视图中文件的位置必须要小心。。

总结

以上就是本文关于SpringMVC编程使用Controller接口实现控制器的全部内容,希望对大家有所帮助。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表