我的Spring MVC第一个应用 (最终版)

项目结构图:

代码如下:

Product

package com.mstf.bean;

import java.io.Serializable;
/**
 * Product类,封装了一些信息,包含三个属性
 * @author wangzheng
 *
 */
public class Product implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private String name;
	private String description;
	private float price;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}
	
}

  ProductForm

package com.mstf.bean.form;
/**
 * ProductForm是表单类
 * 作用:当数据校验失败时,用于保存和展示用户在原始表单的输入
 * @author wangzheng
 *
 */
public class ProductForm {
	private String name;
	private String description;
	private String price;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	
}

  InputProductController

package com.mstf.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);
	
	/**
	 * 返回一个ModelAndView,包含视图,且没有模型,所有直接转发
	 */
	@Override
	public ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse resp) throws Exception {
		logger.info("进入handleRequest成功");
		return new ModelAndView("ProductForm");
	}
}

  SaveProductController

package com.mstf.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 com.mstf.bean.Product;
import com.mstf.bean.form.ProductForm;

public class SaveProductController implements Controller {
	
	private static final Log logger=LogFactory.getLog(InputProductController.class);
	
	@Override
	public ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse resp) throws Exception {
		req.setCharacterEncoding("UTF-8"); //转码
        resp.setCharacterEncoding("UTF-8");
		logger.info("进入SaveProductController成功");
		// 构建一个ProductForm表单对象 
        ProductForm productForm = new ProductForm();
        // 写入表单对象
        productForm.setName(req.getParameter("name"));
        productForm.setDescription(req.getParameter("description"));
        productForm.setPrice(req.getParameter("price"));

        // 创建模型
        Product product = new Product();
        product.setName(productForm.getName());
        product.setDescription(productForm.getDescription());
        try {
            product.setPrice(Float.parseFloat(productForm.getPrice()));
        } catch (Exception e) {
        	e.printStackTrace();
        }
        return new ModelAndView("ProductDetails", "product",product);
	}
}

  springmvc-config.xml

<?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.xsd">

    <bean name="/product_input.action" class="com.mstf.controller.InputProductController"/>
    <bean name="/product_save.action" class="com.mstf.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>

  web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0"> 
	
	<servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
	    <init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
				/WEB-INF/config/springmvc-config.xml
			</param-value>
		</init-param>
        <load-on-startup>1</load-on-startup>    
	</servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

</web-app>

  ProductDetails.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>详情</title>
<style type="text/css">@IMPORT url("css/main.css");</style>
</head>
<body>
	<div id="global">
    <h4>产品已保存</h4>
    <p>
        <h5>详细列表:</h5>
        	名称: ${product.name}<br>
        	简介: ${product.description}<br>
        	价格: ¥${product.price}
    </p>
</div>
</body>
</html>

  ProductForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加</title>
<style type="text/css">@IMPORT url("css/main.css");</style>
</head>
<body>
	<div id="global">
		<form action="product_save.action" method="post">
			<fieldset>
				<legend>添加:</legend>
					<p>
					    <label for="name">名称: </label>
						<input type="text" id="name" name="name" tabindex="1">
		            </p>
		            <p>
					    <label for="description">简介: </label>
						<input type="text" id="description" name="description" tabindex="2">
					</p>
		            <p>
		    			<label for="price">价格: </label>
						<input type="text" id="price" name="price" tabindex="3">
					</p>
					<p id="buttons">
						<input id="reset" type="reset" tabindex="4">
						<input id="submit" type="submit" tabindex="5" value="添加">
					</p>
			</fieldset>
		</form>
	</div>
</body>
</html>

  

原文地址:https://www.cnblogs.com/ceet/p/6594673.html