第七章 : Spring MVC教程示例

Posted 墨迹测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第七章 : Spring MVC教程示例相关的知识,希望对你有一定的参考价值。

  Spring MVC教程通过 DispatcherServlet提供了一个在Spring框架中使用MVC的优雅解决方案。

在Spring Web MVC中,DispatcherServlet类用作前端控制器。它负责管理spring mvc应用程序的流程。 @Controller注释用于将类标记为Spring 3中的控制器。 @RequestMapping注释用于映射请求url。应用于该方法。

Spring Web MVC流程图

如图所示,所有传入请求都被作为前端控制器的 DispatcherServlet拦截。DispatcherServlet从xml文件中获取处理程序映射的条目,并将请求转发给控制器。控制器返回 ModelAndView的对象。DispatcherServlet检查xml文件中视图解析器的条目,并调用指定的视图组件。

Spring Web MVC框架示例

创建spring MVC应用程序有7个步骤。步骤如下:

  1. 创建请求页面(可选)

  2. 创建控制器类

  3. 在web.xml文件中提供控制器条目

  4. 在xml文件中定义bean

  5. 在JSP页面中显示消息

  6. 加载spring core和mvc jar文件

  7. 启动服务器并部署项目

目录结构

第七章 : Spring MVC教程示例

使用Maven的Spring MVC的目录结构

第七章 : Spring MVC教程示例

必需的Jar文件或Maven依赖项

  • 要运行此示例,您需要加载:

    • Spring Core jar文件

    • Spring Web jar文件

如果您使用的是Maven,则无需添加jar文件。现在,您需要在pom.xml文件中添加maven依赖项。

pom.xml

 
   
   
 
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  2.         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  3.    <modelVersion>4.0.0</modelVersion>

  4.    <groupId>com.javatpoint</groupId>

  5.    <artifactId>SpringMVC</artifactId>

  6.    <packaging>war</packaging>

  7.    <version>0.0.1-SNAPSHOT</version>

  8.    <name>SpringMVC Maven Webapp</name>

  9.    <url>http://maven.apache.org</url>

  10.    <dependencies>

  11.        <dependency>

  12.            <groupId>junit</groupId>

  13.            <artifactId>junit</artifactId>

  14.            <version>3.8.1</version>

  15.            <scope>test</scope>

  16.        </dependency>

  17.        <dependency>

  18.            <groupId>javax.servlet</groupId>

  19.            <artifactId>servlet-api</artifactId>

  20.            <version>3.0-alpha-1</version>

  21.        </dependency>

  22.        <dependency>

  23.            <groupId>org.springframework</groupId>

  24.            <artifactId>spring-core</artifactId>

  25.            <version>3.1.2.RELEASE</version>

  26.        </dependency>

  27.        <dependency>

  28.            <groupId>org.springframework</groupId>

  29.            <artifactId>spring-context</artifactId>

  30.            <version>3.1.2.RELEASE</version>

  31.        </dependency>

  32.        <dependency>

  33.            <groupId>org.springframework</groupId>

  34.            <artifactId>spring-beans</artifactId>

  35.            <version>3.1.2.RELEASE</version>

  36.        </dependency>

  37.        <dependency>

  38.            <groupId>org.springframework</groupId>

  39.            <artifactId>spring-webmvc</artifactId>

  40.            <version>3.1.2.RELEASE</version>

  41.        </dependency>

  42.    </dependencies>

  43.    <build>

  44.        <finalName>SpringMVC</finalName>

  45.    </build>

  46. </project>  

1)创建请求页面(可选)

这是一个简单的jsp页面,包含一个链接。它是可选页面。您可以直接调用action类。

index.jsp

 
   
   
 
  1. <a href="hello.html">click</a>  

2)创建控制器类

要创建控制器类,我们使用两个注释 @Controller和 @RequestMapping

@Controller注解标记这个类作为控制器。

@RequestMapping注释用于映射具有指定名称的类。

该类返回具有映射名称的 ModelAndView控制器实例,消息名称和消息值。消息值将显示在jsp页面中。

index.jsp

 
   
   
 
  1. package com.javatpoint;

  2. import org.springframework.stereotype.Controller;

  3. import org.springframework.web.bind.annotation.RequestMapping;

  4. import org.springframework.web.servlet.ModelAndView;

  5. @Controller

  6. public class HelloWorldController {

  7.    @RequestMapping("/hello")

  8.    public ModelAndView helloWorld() {

  9.        String message = "HELLO SPRING MVC HOW R U";

  10.        return new ModelAndView("hellopage", "message", message);

  11.    }

  12. }  

`在web.xml文件中提供控制器的入口

在这个xml文件中,我们指定了Servlet类DispatcherServlet,它充当Spring Web MVC中的前端控制器。所有对html文件的传入请求都将转发到 DispatcherServlet

web.xml

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <web-app version="2.5"

  3.         xmlns="http://java.sun.com/xml/ns/javaee"

  4.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  5.         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  

  6.    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  7.    <servlet>

  8.        <servlet-name>spring</servlet-name>

  9.        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  10.        <load-on-startup>1</load-on-startup>

  11.    </servlet>

  12.    <servlet-mapping>

  13.        <servlet-name>spring</servlet-name>

  14.        <url-pattern>*.html</url-pattern>

  15.    </servlet-mapping>

  16. </web-app>  

4)在xml文件中定义bean

这是我们需要指定ViewResolver和View组件的重要配置文件。

context:component-scan 扫描元素定义了DispatcherServlet搜索控制器类的基本包。

这里, ViewResolver使用了InternalResourceViewResolver类。

prefix+string returned by controller+suffix 将会被视图组件所调用。

此xml文件应位于WEB-INF目录中。

spring-servlet.xml

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <beans xmlns="http://www.springframework.org/schema/beans"

  3.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4.       xmlns:p="http://www.springframework.org/schema/p"

  5.       xmlns:context="http://www.springframework.org/schema/context"

  6.       xsi:schemaLocation="http://www.springframework.org/schema/beans  

  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  

  8. http://www.springframework.org/schema/context  

  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  10.    <context:component-scan base-package="com.javatpoint"/>

  11.    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

  12.        <property name="prefix" value="/WEB-INF/jsp/"/>

  13.        <property name="suffix" value=".jsp"/>

  14.    </bean>

  15. </beans>  

5)在JSP页面中显示消息

这是一个简单的JSP页面,显示控制器返回的消息。它必须位于 WEB-INF/jsp目录中。

hellopage.jsp

 
   
   
 
  1. Message is: ${message}  

Output:

第七章 : Spring MVC教程示例

第七章 : Spring MVC教程示例

Spring 3 MVC多控制器示例

我们可以在Spring Framework中拥有很多控制器类。在这个例子中,我们创建了两个Controller类 HelloWorldController和 WelcomeWorldController

1)控制器类

HelloWorldController.java

 
   
   
 
  1. package com.javatpoint;

  2. import org.springframework.stereotype.Controller;

  3. import org.springframework.web.bind.annotation.RequestMapping;

  4. import org.springframework.web.servlet.ModelAndView;

  5. @Controller

  6. public class HelloWorldController {

  7.    @RequestMapping("/hello")

  8.    public ModelAndView helloWorld() {

  9.        String message = "HELLO SPRING MVC";

  10.        return new ModelAndView("hellopage", "message", message);

  11.    }

  12. }  


WelcomeWorldController.java

 
   
   
 
  1. package com.javatpoint;

  2. import org.springframework.stereotype.Controller;

  3. import org.springframework.web.bind.annotation.RequestMapping;

  4. import org.springframework.web.servlet.ModelAndView;

  5. @Controller

  6. public class WelcomeWorldController {

  7.    @RequestMapping("/welcome")

  8.    public ModelAndView helloWorld() {

  9.        String message = "WELCOME SPRING MVC";

  10.        return new ModelAndView("welcomepage", "message", message);

  11.    }

  12. }  

2)视图组件

要运行此示例,它必须位于 WEB-INF/jsp目录中。

hellopage.jsp

 
   
   
 
  1. Message is: ${message}  


welcomepage.jsp

 
   
   
 
  1. Message is: ${message}  

`3)Index 页面

它是可选的欢迎页面,提供调用两个控制器的链接。

 
   
   
 
  1. <a href="hello.html">click</a>|  

  2. <a href="welcome.html">click</a>  

Spring MVC请求响应示例

我们可以通过遵循Spring MVC来创建登录应用程序。我们需要在Controller类的请求处理方法中传递HttpServletRequestHttpServletResponse对象。请看以下例子:

1)控制器类

HelloWorldController.java

 
   
   
 
  1. package com.javatpoint;

  2. import javax.servlet.http.HttpServletRequest;

  3. import javax.servlet.http.HttpServletResponse;

  4. import org.springframework.stereotype.Controller;

  5. import org.springframework.web.bind.annotation.RequestMapping;

  6. import org.springframework.web.servlet.ModelAndView;

  7. @Controller

  8. public class HelloWorldController {

  9.    @RequestMapping("/hello")

  10.    public ModelAndView helloWorld(HttpServletRequest request,HttpServletResponse res) {

  11.        String name=request.getParameter("name");

  12.        String password=request.getParameter("password");

  13.        if(password.equals("admin")){

  14.            String message = "HELLO "+name;

  15.            return new ModelAndView("hellopage", "message", message);

  16.        }

  17.        else{

  18.            return new ModelAndView("errorpage", "message","Sorry, username or password error");

  19.        }

  20.    }

  21. }  

2) 视图组件

hellopage.jsp

 
   
   
 
  1. Message is: ${message}  

errorpage.jsp

 
   
   
 
  1. ${message}  

  2. <jsp:include page="/index.jsp"></jsp:include>  

3) Index 页面

登录页面,用于接收用户的名称和密码。

 
   
   
 
  1. <form action="hello.html" method="post">

  2.    Name:<input type="text" name="name"/><br/>

  3.    Password:<input type="password" name="password"/><br/>

  4.    <input type="submit" value="login"/>

  5. </form>  

`Spring MVC表单示例

  如何在不使用数据库的情况下处理spring MVC中的表单数据。在这里,我们将使用@Controler@RequestMapping@ModelAttribute注释。

要显示输入表单,我们将使用spring框架的 <formform>标记。先看一个简单的例子,将表单数据存储在模型对象中并显示列表的数据。

必需的Jar文件

  • 您需要加载

    • Spring Core jar文件

    • Spring Web jar文件

download all the jar files for spring including core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm etc.


index.jsp

 
   
   
 
  1. <a href="empform">Add Employee</a>  

  2. <a href="viewemp">View Employees</a>  

Emp.java

 
   
   
 
  1. package com.javatpoint.beans;

  2. public class Emp {

  3.    private int id;

  4.    private String name;

  5.    private float salary;

  6.    private String designation;

  7.    public Emp() {

  8.    }

  9.    public Emp(int id, String name, float salary, String designation) {

  10.        super();

  11.        this.id = id;

  12.        this.name = name;

  13.        this.salary = salary;

  14.        this.designation = designation;

  15.    }

  16.    public int getId() {

  17.        return id;

  18.    }

  19.    public void setId(int id) {

  20.        this.id = id;

  21.    }

  22.    public String getName() {

  23.        return name;

  24.    }

  25.    public void setName(String name) {

  26.        this.name = name;

  27.    }

  28.    public float getSalary() {

  29.        return salary;

  30.    }

  31.    public void setSalary(float salary) {

  32.        this.salary = salary;

  33.    }

  34.    public String getDesignation() {

  35.        return designation;

  36.    }

  37.    public void setDesignation(String designation) {

  38.        this.designation = designation;

  39.    }

  40. }  

EmpController.java

 
   
   
 
  1. package com.javatpoint.controllers;

  2. import java.util.ArrayList;

  3. import java.util.List;

  4. import org.springframework.stereotype.Controller;

  5. import org.springframework.web.bind.annotation.ModelAttribute;

  6. import org.springframework.web.bind.annotation.RequestMapping;

  7. import org.springframework.web.bind.annotation.RequestMethod;

  8. import org.springframework.web.servlet.ModelAndView;

  9. import com.javatpoint.beans.Emp;

  10. @Controller

  11. public class EmpController {

  12.    @RequestMapping("/empform")

  13.    public ModelAndView showform(){

  14.        //command is a reserved request attribute name, now use <form> tag to show object data  

  15.        return new ModelAndView("empform","command",new Emp());

  16.    }

  17.    @RequestMapping(value="/save",method = RequestMethod.POST)

  18.    public ModelAndView save(@ModelAttribute("emp") Emp emp){

  19.        //write code to save emp object  

  20.        //here, we are displaying emp object to prove emp has data  

  21.        System.out.println(emp.getName()+" "+emp.getSalary()+" "+emp.getDesignation());

  22.        //return new ModelAndView("empform","command",emp);//will display object data  

  23.        return new ModelAndView("redirect:/viewemp");//will redirect to viewemp request mapping  

  24.    }

  25.    @RequestMapping("/viewemp")

  26.    public ModelAndView viewemp(){

  27.        //write the code to get all employees from DAO  

  28.        //here, we are writing manual code of list for easy understanding  

  29.        List<Emp> list=new ArrayList<Emp>();

  30.        list.add(new Emp(1,"rahul",35000f,"S.Engineer"));

  31.        list.add(new Emp(2,"aditya",25000f,"IT Manager"));

  32.        list.add(new Emp(3,"sachin",55000f,"Care Taker"));

  33.        return new ModelAndView("viewemp","list",list);

  34.    }

  35. }  

`web.xml

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <web-app version="2.5"

  3.         xmlns="http://java.sun.com/xml/ns/javaee"

  4.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  5.         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  

  6.    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  7.    <servlet>

  8.        <servlet-name>spring</servlet-name>

  9.        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  10.        <load-on-startup>1</load-on-startup>

  11.    </servlet>

  12.    <servlet-mapping>

  13.        <servlet-name>spring</servlet-name>

  14.        <url-pattern>/</url-pattern>

  15.    </servlet-mapping>

  16. </web-app>  

spring-servlet.xml

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <beans xmlns="http://www.springframework.org/schema/beans"

  3.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4.       xmlns:p="http://www.springframework.org/schema/p"

  5.       xmlns:context="http://www.springframework.org/schema/context"

  6.       xsi:schemaLocation="http://www.springframework.org/schema/beans    

  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    

  8. http://www.springframework.org/schema/context    

  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  10.    <context:component-scan base-package="com.javatpoint.controllers"></context:component-scan>

  11.    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

  12.        <property name="prefix" value="/WEB-INF/jsp/"></property>

  13.        <property name="suffix" value=".jsp"></property>

  14.    </bean>

  15. </beans>  

empform.jsp

 
   
   
 
  1. <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

  3. <form:form method="post" action="save">

  4. <table >

  5.    <tr>

  6.        <td>Name : </td>

  7.        <td><form:input path="name"  /></td>

  8.    </tr>

  9.    <tr>

  10.        <td>Salary :</td>

  11.        <td><form:input path="salary" /></td>

  12.    </tr>

  13.    <tr>

  14.        <td>Designation :</td>

  15.        <td><form:input path="designation" /></td>

  16.    </tr>

  17.    <tr>

  18.        <td colspan="2"><input type="submit" value="Save" /></td>

  19.    </tr>

  20. </table>

  21. </form:form>    

viewemp.jsp

 
   
   
 
  1. <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

  3. <table border="2" width="70%" cellpadding="2">

  4. <tr><th>Id</th><th>Name</th><th>Salary</th><th>Designation</th></tr>

  5. <c:forEach var="emp" items="${list}">

  6.    <tr>

  7.        <td>${emp.id}</td>

  8.        <td>${emp.name}</td>

  9.        <td>${emp.salary}</td>

  10.        <td>${emp.designation}</td>

  11.    </tr>

  12. </c:forEach>

  13. </table>  

Output :

第七章 : Spring MVC教程示例

第七章 : Spring MVC教程示例

第七章 : Spring MVC教程示例

第七章 : Spring MVC教程示例

Spring MVC CRUD示例

  应用程序中CRUD(创建,读取,更新和删除)是创建任何项目中最重要的组成部分。它提供了开发大型项目的概念。在Spring MVC中,我们可以开发一个简单的CRUD应用程序。

在这里,我们使用 JdbcTemplate进行数据库交互。

  • 必需的Jar文件

    • Spring Core jar files

    • Spring Web jar files

    • ojdbc14.jar file for oracle

download all the jar files for spring including core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm etc.

创建表格

这里,我们使用的是oracle 10g数据库的emp99表,它有4个字段:idnamesalarydesignation。这里,id是自动递增的,它是由序列生成的。

第七章 : Spring MVC教程示例

Spring MVC CRUD示例

index.jsp

 
   
   
 
  1. <a href="empform">Add Employee</a>  

  2. <a href="viewemp">View Employees</a>  

Emp.jsp

 
   
   
 
  1. package com.javatpoint.beans;

  2. public class Emp {

  3.    private int id;

  4.    private String name;

  5.    private float salary;

  6.    private String designation;

  7.    public int getId() {

  8.        return id;

  9.    }

  10.    public void setId(int id) {

  11.        this.id = id;

  12.    }

  13.    public String getName() {

  14.        return name;

  15.    }

  16.    public void setName(String name) {

  17.        this.name = name;

  18.    }

  19.    public float getSalary() {

  20.        return salary;

  21.    }

  22.    public void setSalary(float salary) {

  23.        this.salary = salary;

  24.    }

  25.    public String getDesignation() {

  26.        return designation;

  27.    }

  28.    public void setDesignation(String designation) {

  29.        this.designation = designation;

  30.    }

  31. }  

EmpDao.java

 
   
   
 
  1. package com.javatpoint.dao;

  2. import java.sql.ResultSet;

  3. import java.sql.SQLException;

  4. import java.util.List;

  5. import org.springframework.jdbc.core.BeanPropertyRowMapper;

  6. import org.springframework.jdbc.core.JdbcTemplate;

  7. import org.springframework.jdbc.core.RowMapper;

  8. import com.javatpoint.beans.Emp;

  9. public class EmpDao {

  10.    JdbcTemplate template;

  11.    public void setTemplate(JdbcTemplate template) {

  12.        this.template = template;

  13.    }

  14.    public int save(Emp p){

  15.        String sql="insert into Emp99(name,salary,designation)  

  16.        values('"+p.getName()+"',"+p.getSalary()+",'"+p.getDesignation()+"')";  

  17.        return template.update(sql);

  18.    }

  19.    public int update(Emp p){

  20.        String sql="update Emp99 set name='"+p.getName()+"', salary="+p.getSalary()+",  

  21.        designation='"+p.getDesignation()+"' where id="+p.getId()+"";  

  22.        return template.update(sql);

  23.    }

  24.    public int delete(int id){

  25.        String sql="delete from Emp99 where id="+id+"";

  26.        return template.update(sql);

  27.    }

  28.    public Emp getEmpById(int id){

  29.        String sql="select * from Emp99 where id=?";

  30.        return template.queryForObject(sql, new Object[]{id},new BeanPropertyRowMapper<Emp>(Emp.class));

  31.    }

  32.    public List<Emp> getEmployees(){

  33.        return template.query("select * from Emp99",new RowMapper<Emp>(){

  34.            public Emp mapRow(ResultSet rs, int row) throws SQLException {

  35.                Emp e=new Emp();

  36.                e.setId(rs.getInt(1));

  37.                e.setName(rs.getString(2));

  38.                e.setSalary(rs.getFloat(3));

  39.                e.setDesignation(rs.getString(4));

  40.                return e;

  41.            }

  42.        });

  43.    }

  44. }  

EmpController.java

 
   
   
 
  1. package com.javatpoint.controllers;

  2. import java.util.ArrayList;

  3. import java.util.List;

  4. import org.springframework.beans.factory.annotation.Autowired;

  5. import org.springframework.stereotype.Controller;

  6. import org.springframework.web.bind.annotation.ModelAttribute;

  7. import org.springframework.web.bind.annotation.PathVariable;

  8. import org.springframework.web.bind.annotation.RequestMapping;

  9. import org.springframework.web.bind.annotation.RequestMethod;

  10. import org.springframework.web.servlet.ModelAndView;

  11. import com.javatpoint.beans.Emp;

  12. import com.javatpoint.dao.EmpDao;

  13. @Controller

  14. public class EmpController {

  15.    @Autowired

  16.    EmpDao dao;//will inject dao from xml file  

  17.    /*It displays a form to input data, here "command" is a reserved request attribute

  18.     *which is used to display object data into form

  19.     */

  20.    @RequestMapping("/empform")

  21.    public ModelAndView showform(){

  22.        return new ModelAndView("empform","command",new Emp());

  23.    }

  24.    /*It saves object into database. The @ModelAttribute puts request data

  25.     *  into model object. You need to mention RequestMethod.POST method

  26.     *  because default request is GET*/

  27.    @RequestMapping(value="/save",method = RequestMethod.POST)

  28.    public ModelAndView save(@ModelAttribute("emp") Emp emp){

  29.        dao.save(emp);

  30.        return new ModelAndView("redirect:/viewemp");//will redirect to viewemp request mapping  

  31.    }

  32.    /* It provides list of employees in model object */

  33.    @RequestMapping("/viewemp")

  34.    public ModelAndView viewemp(){

  35.        List<Emp> list=dao.getEmployees();

  36.        return new ModelAndView("viewemp","list",list);

  37.    }

  38.    /* It displays object data into form for the given id.

  39.     * The @PathVariable puts URL data into variable.*/

  40.    @RequestMapping(value="/editemp/{id}")

  41.    public ModelAndView edit(@PathVariable int id){

  42.        Emp emp=dao.getEmpById(id);

  43.        return new ModelAndView("empeditform","command",emp);

  44.    }

  45.    /* It updates model object. */

  46.    @RequestMapping(value="/editsave",method = RequestMethod.POST)

  47.    public ModelAndView editsave(@ModelAttribute("emp") Emp emp){

  48.        dao.update(emp);

  49.        return new ModelAndView("redirect:/viewemp");

  50.    }

  51.    /* It deletes record for the given id in URL and redirects to /viewemp */

  52.    @RequestMapping(value="/deleteemp/{id}",method = RequestMethod.GET)

  53.    public ModelAndView delete(@PathVariable int id){

  54.        dao.delete(id);

  55.        return new ModelAndView("redirect:/viewemp");

  56.    }

  57. }  

web.xml

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <web-app version="2.5"

  3.         xmlns="http://java.sun.com/xml/ns/javaee"

  4.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  5.         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  

  6.    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  7.    <servlet>

  8.        <servlet-name>spring</servlet-name>

  9.        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  10.        <load-on-startup>1</load-on-startup>

  11.    </servlet>

  12.    <servlet-mapping>

  13.        <servlet-name>spring</servlet-name>

  14.        <url-pattern>/</url-pattern>

  15.    </servlet-mapping>

  16. </web-app>  

`spring-servlet.xml

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <beans xmlns="http://www.springframework.org/schema/beans"

  3.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4.       xmlns:p="http://www.springframework.org/schema/p"

  5.       xmlns:context="http://www.springframework.org/schema/context"

  6.       xsi:schemaLocation="http://www.springframework.org/schema/beans    

  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    

  8. http://www.springframework.org/schema/context    

  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  10.    <context:component-scan base-package="com.javatpoint.controllers"></context:component-scan>

  11.    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

  12.        <property name="prefix" value="/WEB-INF/jsp/"></property>

  13.        <property name="suffix" value=".jsp"></property>

  14.    </bean>

  15.    <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

  16.        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>

  17.        <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property>

  18.        <property name="username" value="system"></property>

  19.        <property name="password" value="oracle"></property>

  20.    </bean>

  21.    <bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">

  22.        <property name="dataSource" ref="ds"></property>

  23.    </bean>

  24.    <bean id="dao" class="com.javatpoint.dao.EmpDao">

  25.        <property name="template" ref="jt"></property>

  26.    </bean>

  27. </beans>  

empform.jsp

 
   
   
 
  1. <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

  3. <h1>Add New Employee</h1>

  4. <form:form method="post" action="save">

  5. <table >

  6.    <tr>

  7.        <td>Name : </td>

  8.        <td><form:input path="name"  /></td>

  9.    </tr>

  10.    <tr>

  11.        <td>Salary :</td>

  12.        <td><form:input path="salary" /></td>

  13.    </tr>

  14.    <tr>

  15.        <td>Designation :</td>

  16.        <td><form:input path="designation" /></td>

  17.    </tr>

  18.    <tr>

  19.        <td> </td>

  20.        <td><input type="submit" value="Save" /></td>

  21.    </tr>

  22. </table>

  23. </form:form>    

empeditform.jsp

这里“/ SpringMVCCRUDSimple”是项目名称,如果您有不同的项目名称,请更改此名称。对于实时应用程序,您可以提供完整的URL。

 
   
   
 
  1. <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>    

  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>    

  3.        <h1>Edit Employee</h1>  

  4.       <form:form method="POST" action="/SpringMVCCRUDSimple/editsave">    

  5.        <table >    

  6.        <tr>  

  7.        <td></td>    

  8.         <td><form:hidden  path="id" /></td>  

  9.         </tr>  

  10.         <tr>    

  11.          <td>Name : </td>  

  12.          <td><form:input path="name"  /></td>  

  13.         </tr>    

  14.         <tr>    

  15.          <td>Salary :</td>    

  16.          <td><form:input path="salary" /></td>  

  17.         </tr>  

  18.         <tr>    

  19.          <td>Designation :</td>    

  20.          <td><form:input path="designation" /></td>  

  21.         </tr>  

  22.         <tr>    

  23.          <td> </td>    

  24.          <td><input type="submit" value="Edit Save" /></td>    

  25.         </tr>    

  26.        </table>    

  27.       </form:form>    

viewemp.jsp

 
   
   
 
  1. <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

  3. <h1>Employees List</h1>

  4. <table border="2" width="70%" cellpadding="2">

  5. <tr><th>Id</th><th>Name</th><th>Salary</th><th>Designation</th><th>Edit</th><th>Delete</th></tr>

  6. <c:forEach var="emp" items="${list}">

  7.    <tr>

  8.        <td>${emp.id}</td>

  9.        <td>${emp.name}</td>

  10.        <td>${emp.salary}</td>

  11.        <td>${emp.designation}</td>

  12.        <td><a href="editemp/${emp.id}">Edit</a></td>

  13.        <td><a href="deleteemp/${emp.id}">Delete</a></td>

  14.    </tr>

  15. </c:forEach>

  16. </table>

  17. <br/>

  18. <a href="empform">Add New Employee</a>  

Output :

第七章 : Spring MVC教程示例

点击“Add New Employee”链接,你会看到以下表格。

第七章 : Spring MVC教程示例

填充数据并单击save按钮。你会看到employees 名单。

第七章 : Spring MVC教程示例

现在点击“edit”链接,数据将显示一个表单。

第七章 : Spring MVC教程示例

现在更改表单的数据并单击“edit save”按钮。

第七章 : Spring MVC教程示例

现在点击“delete”链接,你会看到删除记录的员工列表。

第七章 : Spring MVC教程示例

Spring MVC分页示例

分页用于在不同的部分显示大量的记录。在这种情况下,我们在一个页面中显示10条、20条或50条记录。对于剩余的记录,我们提供链接

我们可以简单地在Spring MVC中创建分页示例。以下这个分页示例中,我们使用mysql数据库来获取记录。

必需的Jar文件

  • 运行此示例,您需要加载:

    • Spring Core jar文件

    • Spring Web jar文件

    • mysql-connector.jar文件

下载spring的所有jar文件,包括core,web,aop,mvc,j2ee,remoting,oxm,jdbc,orm等。

创建表或导入sql文件

这里,我们在“test”数据库中创建了“emp”表。emp表有三个字段:idnamesalary。手动创建表和插入记录或导入我们的sql文件。

Spring MVC分页示例

index.jsp

 
   
   
 
  1. <a href="viewemp/1">View Employees</a>  

Emp.java

 
   
   
 
  1. package com.javatpoint.beans;

  2. public class Emp {

  3.    private int id;

  4.    private String name;

  5.    private float salary;

  6.    public int getId() {

  7.        return id;

  8.    }

  9.    public void setId(int id) {

  10.        this.id = id;

  11.    }

  12.    public String getName() {

  13.        return name;

  14.    }

  15.    public void setName(String name) {

  16.        this.name = name;

  17.    }

  18.    public float getSalary() {

  19.        return salary;

  20.    }

  21.    public void setSalary(float salary) {

  22.        this.salary = salary;

  23.    }

  24. }  

EmpDao.java

 
   
   
 
  1. package com.javatpoint.dao;

  2. import java.sql.ResultSet;

  3. import java.sql.SQLException;

  4. import java.util.List;

  5. import org.springframework.jdbc.core.JdbcTemplate;

  6. import org.springframework.jdbc.core.RowMapper;

  7. import com.javatpoint.beans.Emp;

  8. public class EmpDao {

  9.    JdbcTemplate template;

  10.    public void setTemplate(JdbcTemplate template) {

  11.        this.template = template;

  12.    }

  13.    public List<Emp> getEmployeesByPage(int pageid,int total){

  14.        String sql="select * from Emp limit "+(pageid-1)+","+total;

  15.        return template.query(sql,new RowMapper<Emp>(){

  16.            public Emp mapRow(ResultSet rs, int row) throws SQLException {

  17.                Emp e=new Emp();

  18.                e.setId(rs.getInt(1));

  19.                e.setName(rs.getString(2));

  20.                e.setSalary(rs.getFloat(3));

  21.                return e;

  22.            }

  23.        });

  24.    }

  25. }  

EmpController.java

 
   
   
 
  1. package com.javatpoint.controllers;

  2. import java.util.ArrayList;

  3. import java.util.List;

  4. import org.springframework.beans.factory.annotation.Autowired;

  5. import org.springframework.stereotype.Controller;

  6. import org.springframework.web.bind.annotation.ModelAttribute;

  7. import org.springframework.web.bind.annotation.PathVariable;

  8. import org.springframework.web.bind.annotation.RequestMapping;

  9. import org.springframework.web.bind.annotation.RequestMethod;

  10. import org.springframework.web.servlet.ModelAndView;

  11. import com.javatpoint.beans.Emp;

  12. import com.javatpoint.dao.EmpDao;

  13. @Controller

  14. public class EmpController {

  15.    @Autowired

  16.    EmpDao dao;

  17.    @RequestMapping(value="/viewemp/{pageid}")

  18.    public ModelAndView edit(@PathVariable int pageid){

  19.        int total=5;

  20.        if(pageid==1){}

  21.        else{

  22.            pageid=(pageid-1)*total+1;

  23.        }

  24.        List<Emp> list=dao.getEmployeesByPage(pageid,total);

  25.        return new ModelAndView("viewemp","list",list);

  26.    }

  27. }  

web.xml

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>  

  2. <web-app version="2.5"  

  3.    xmlns="http://java.sun.com/xml/ns/javaee"  

  4.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

  5.    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  

  6.    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  

  7. <servlet>  

  8.    <servlet-name>spring</servlet-name>  

  9.    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

  10.    <load-on-startup>1</load-on-startup>  

  11. </servlet>  

  12. <servlet-mapping>  

  13.    <servlet-name>spring</servlet-name>  

  14.    <url-pattern>/</url-pattern>  

  15. </servlet-mapping>  

  16. </web-app>  

spring-servlet.xml

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>  

  2. <beans xmlns="http://www.springframework.org/schema/beans"    

  3.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    

  4.    xmlns:p="http://www.springframework.org/schema/p"    

  5.    xmlns:context="http://www.springframework.org/schema/context"    

  6.    xsi:schemaLocation="http://www.springframework.org/schema/beans    

  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    

  8. http://www.springframework.org/schema/context    

  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">    

  10. <context:component-scan base-package="com.javatpoint.controllers"></context:component-scan>  

  11. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  

  12. <property name="prefix" value="/WEB-INF/jsp/"></property>  

  13. <property name="suffix" value=".jsp"></property>  

  14. </bean>  

  15. <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  

  16. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>  

  17. <property name="url" value="jdbc:mysql://localhost:3306/test"></property>  

  18. <property name="username" value=""></property>  

  19. <property name="password" value=""></property>  

  20. </bean>  

  21. <bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">  

  22. <property name="dataSource" ref="ds"></property>  

  23. </bean>  

  24. <bean id="dao" class="com.javatpoint.dao.EmpDao">  

  25. <property name="template" ref="jt"></property>  

  26. </bean>  

  27. </beans>  

viewemp.jsp

 
   
   
 
  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

  2. <h1>Employees List</h1>

  3. <table border="2" width="70%" cellpadding="2">

  4. <tr><th>Id</th><th>Name</th><th>Salary</th></tr>

  5. <c:forEach var="emp" items="${list}">

  6.    <tr>

  7.        <td>${emp.id}</td>

  8.        <td>${emp.name}</td>

  9.        <td>${emp.salary}</td>

  10.    </tr>

  11. </c:forEach>

  12. </table>

  13. <br/>

  14. <a href="/SpringMVC/viewemp/1">1</a>

  15. <a href="/SpringMVC/viewemp/2">2</a>

  16. <a href="/SpringMVC/viewemp/3">3</a>  


Output :

第七章 : Spring MVC教程示例

第七章 : Spring MVC教程示例

第七章 : Spring MVC教程示例

第七章 : Spring MVC教程示例

Spring MVC文件上传示例

  Spring MVC提供了上传文件的简便方法,它可能是图像或其他文件。

必需的Jar文件

  • 运行此示例,您需要加载:

    • Spring Core jar文件

    • Spring Web jar文件

    • commons-fileupload.jar和commons-io.jar文件

下载spring的所有jar文件,包括core,web,aop,mvc,j2ee,remoting,oxm,jdbc,orm等。
下载commons-io.jar
下载commons-fileupload.jar

Spring MVC文件上传步骤(相比MVC)

1)添加commons-iofileupload.jar文件
2)在spring-servlet.xml中添加 CommonsMultipartResolver的入口

 
   
   
 
  1. < bean id = “multipartResolver”    

  2. class = “org.springframework.web.multipart.commons.CommonsMultipartResolver” />


3)创建表单以提交文件。方法名称必须为“ post”,并且enctype为“ multiple/form-data”。

 
   
   
 
  1. <form action="savefile" method="post" enctype="multipart/form-data">

  2.    Select File: <input type="file" name="file"/>

  3.    <input type="submit" value="Upload File"/>

  4. </form>  

4)在<font color="#006600">Controller</font>中使用CommonsMultipartFile`类。

 
   
   
 
  1. @RequestMapping(value="/savefile",method=RequestMethod.POST)

  2. public ModelAndView upload(@RequestParam CommonsMultipartFile file,HttpSession session){

  3.        String path=session.getServletContext().getRealPath("/");

  4.        String filename=file.getOriginalFilename();

  5.        System.out.println(path+" "+filename);

  6.        try{

  7.        byte barr[]=file.getBytes();

  8.        BufferedOutputStream bout=new BufferedOutputStream(

  9.        new FileOutputStream(path+"/"+filename));

  10.        bout.write(barr);

  11.        bout.flush();

  12.        bout.close();

  13.        }catch(Exception e){System.out.println(e);}

  14.        return new ModelAndView("upload-success","filename",path+"/"+filename);

  15.        }  


5)在JSP中显示图像。

 
   
   
 
  1. <h1>Upload Success</h1>  

  2. <img src="${filename}"/>  


Spring MVC文件上传示例

创建图像目录

在项目中创建“images”目录,因为我们要通过编写代码来保存“/images”目录中的所有文件。

index.jsp

 
   
   
 
  1. <a href="uploadform">Upload Image</a>  

Emp.java

 
   
   
 
  1. package com.javatpoint;

  2. import java.io.BufferedOutputStream;

  3. import java.io.File;

  4. import java.io.FileOutputStream;

  5. import javax.servlet.ServletContext;

  6. import javax.servlet.http.HttpServletRequest;

  7. import javax.servlet.http.HttpServletResponse;

  8. import javax.servlet.http.HttpSession;

  9. import org.apache.commons.fileupload.disk.DiskFileItemFactory;

  10. import org.apache.commons.fileupload.servlet.ServletFileUpload;

  11. import org.springframework.stereotype.Controller;

  12. import org.springframework.web.bind.annotation.ModelAttribute;

  13. import org.springframework.web.bind.annotation.RequestMapping;

  14. import org.springframework.web.bind.annotation.RequestMethod;

  15. import org.springframework.web.bind.annotation.RequestParam;

  16. import org.springframework.web.multipart.commons.CommonsMultipartFile;

  17. import org.springframework.web.servlet.ModelAndView;

  18. @Controller

  19. public class HelloController {

  20.    private static final String UPLOAD_DIRECTORY ="/images";

  21.    @RequestMapping("uploadform")

  22.    public ModelAndView uploadForm(){

  23.        return new ModelAndView("uploadform");

  24.    }

  25.    @RequestMapping(value="savefile",method=RequestMethod.POST)

  26.    public ModelAndView saveimage( @RequestParam CommonsMultipartFile file,

  27.                                   HttpSession session) throws Exception{

  28.        ServletContext context = session.getServletContext();

  29.        String path = context.getRealPath(UPLOAD_DIRECTORY);

  30.        String filename = file.getOriginalFilename();

  31.        System.out.println(path+" "+filename);

  32.        byte[] bytes = file.getBytes();

  33.        BufferedOutputStream stream =new BufferedOutputStream(new FileOutputStream(

  34.                new File(path + File.separator + filename)));

  35.        stream.write(bytes);

  36.        stream.flush();

  37.        stream.close();

  38.        return new ModelAndView("uploadform","filesuccess","File successfully saved!");

  39.    }

  40. }  

web.xml
这里,需要为 CommonsMultipartResolver创建一个bean。

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <web-app version="2.5"

  3.         xmlns="http://java.sun.com/xml/ns/javaee"

  4.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  5.         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  

  6.    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  7.    <servlet>

  8.        <servlet-name>spring</servlet-name>

  9.        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  10.        <load-on-startup>1</load-on-startup>

  11.    </servlet>

  12.    <servlet-mapping>

  13.        <servlet-name>spring</servlet-name>

  14.        <url-pattern>/</url-pattern>

  15.    </servlet-mapping>

  16. </web-app>  

spring-servlet.xml

 
   
   
 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <beans xmlns="http://www.springframework.org/schema/beans"

  3.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4.       xmlns:p="http://www.springframework.org/schema/p"

  5.       xmlns:context="http://www.springframework.org/schema/context"

  6.       xsi:schemaLocation="http://www.springframework.org/schema/beans    

  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    

  8. http://www.springframework.org/schema/context    

  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  10.    <context:component-scan base-package="com.javatpoint"></context:component-scan>

  11.    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

  12.        <property name="prefix" value="/WEB-INF/jsp/"></property>

  13.        <property name="suffix" value=".jsp"></property>

  14.    </bean>

  15.    <bean id="multipartResolver"

  16.          class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

  17. </beans>  

uploadform.jsp
这里的形式必须是 method=“post和 enctype=“multipart/form-data

 
   
   
 
  1. <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

  2.        <!DOCTYPE html>

  3. <html>

  4. <head>

  5.    <title>Image File Upload</title>

  6. </head>

  7. <body>

  8.    <h1>File Upload Example - JavaTpoint</h1>

  9.    <h3 style="color:red">${filesuccess}</h3>

  10.    <form:form method="post" action="savefile" enctype="multipart/form-data">

  11.        <p><label for="image">Choose Image</label></p>

  12.        <p><input name="file" id="fileToUpload" type="file" /></p>

  13.        <p><input type="submit" value="Upload"></p>

  14.    </form:form>

  15. </body>

  16. </html>  

Output :

第七章 : Spring MVC教程示例

第七章 : Spring MVC教程示例

第七章 : Spring MVC教程示例

转到服务器控制台上打印的路径,以查看上载的文件。


END

以上是关于第七章 : Spring MVC教程示例的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC 3.2 Thymeleaf Ajax 片段

Spring MVC 教程

SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-001- DispatcherServlet的高级配置(ServletRegistration.Dynami

Spring和springMVC详细示例精通教程

廖大python实战教程第七天

Spring MVC可重用视图组件[重复]