SpringMVC编程使用Controller接口实现控制器实例代码
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接口实现控制器的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:
spring springmvc在启动完成后执行方法源码解析
springmvc使用multipartfile 实现异步上传方法介绍
如有不足之处,欢迎留言指出。