Spring MVC实例,使用Controller接口实现控制器
来源:互联网 发布:北京市网络职业学院 编辑:程序博客网 时间:2024/06/14 13:42
之前用注解的方式实现了控制器,现在换了一种,通过实现了Controller接口的Controller类来实现处理请求的作用。
主要包括:XML配置文件,Java普通类,Java form类,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);@Overridepublic 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);@Overridepublic ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {logger.info("SaveProductController called");ProductForm productForm = new ProductForm();//product action propertiesproductForm.setName(request.getParameter("name"));productForm.setDescription(request.getParameter("description"));productForm.setPrice(request.getParameter("price"));//create modelProduct 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 ProductSystem.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类返回的视图中文件的位置必须要小心。。博主搞了半个小时才弄明白问题出在那里。
阅读全文
1 0
- Spring MVC实例,使用Controller接口实现控制器
- Spring MVC(一)实现Controller接口的控制器
- Spring MVC学习(四)-------Controller接口控制器详解1
- Spring MVC学习(四)-------Controller接口控制器详解2
- Spring MVC学习(四)-------Controller接口控制器详解3
- Spring MVC学习(四)-------Controller接口控制器详解4
- Spring MVC学习(四)-------Controller接口控制器详解5
- Spring MVC学习(四)-------Controller接口控制器详解6
- Spring MVC学习(四)-------Controller接口控制器详解7(完)
- Spring MVC详解(四) Controller接口控制器详解(1)
- Spring MVC详解(四) Controller接口控制器详解(1)
- Spring MVC学习(四)-------Controller接口控制器详解1
- Spring MVC学习(四)-------Controller接口控制器详解2
- Spring MVC学习(四)-------Controller接口控制器详解3
- Spring MVC学习(四)-------Controller接口控制器详解4
- Spring MVC学习(四)-------Controller接口控制器详解5
- Spring MVC学习(四)-------Controller接口控制器详解6
- Spring MVC学习(四)-------Controller接口控制器详解7(完)
- 【教程】Marvell 88W8686/88W8782/88W8801 WiFi模块驱动程序的编写(一)
- 15 Three.js实现阴影效果
- javascript
- c++ 屏蔽按F1弹出帮助文档功能
- 二分查找(折半查找)
- Spring MVC实例,使用Controller接口实现控制器
- 一级标题居中,二级标题固定缩进
- android 内存管理以及优化 粗略方案
- Java中获取键盘输入值的三种方法
- 欢迎使用CSDN-markdown编辑器
- getch()和getchar()的区别
- 【Maven】用maven后台打包报错Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (def
- 1085. Perfect Sequence (25)
- 后台开发写前端的思路