SpringMVC

Posted 小企鹅推雪球!

tags:

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

SpringMVC静态页面

  1. 使用Spring MVC Framework编写一个简单的基于Web的应用程序
  2. 可以使用<mvc:resources>标记访问静态页面和动态页面。
  3. 首先使用Eclipse IDE创建一个动态WEB项目并使用Spring Web Framework开发基于动态表单的Web应用程序
  4. 第一步:创建一个简单的动态Web项目:StaticPages,并在 src 目录下创建一个 com.yiibai.springmvc 包。
  5. 第二步:在com.yiibai.springmvc包下创建一个Java类WebController
  6. 第三步:在jsp子文件夹下创建一个静态文件final.html
  7. 在WebContent/WEB-INF文件夹下创建一个Spring配置文件 StaticPages-servlet.xml,

WebController.java

package com.yiibai.springmvc;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class WebController {

   @RequestMapping(value = "/index", method = RequestMethod.GET)
   public String index() {
       return "index";
   }

   @RequestMapping(value = "/staticPage", method = RequestMethod.GET)
   public String redirect() {

      return "redirect:/pages/final.html";
   }
}

StaticPages-servlet.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" xmlns:mvc="http://www.springframework.org/schema/mvc"
          xmlns:context="http://www.springframework.org/schema/context"
          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

      <context:component-scan base-package="springmvc"/>

      <mvc:resources mapping="/jsp/**" location="/WEB-INF/jsp/"/>
      <mvc:annotation-driven/>


</beans>
  1. 使用<mvc:resources ..../>标记来映射静态页面
  2. 映射属性必须是指定http请求的URL模式的Ant模式
  3. location属性必须指定一个或多个有效的资源目录位置,其中包含静态页面,包括图片,样式表,javascript和其他静态内容。
  4. 可以使用逗号分隔的值列表指定多个资源位置。

WEB-INF/jsp/index.jsp 是一个登录页面,将会发送一个请求访问staticPage服务方法,该方法将此请求重定向到WEB-INF/pages文件夹中的静态页面。

index.jsp 页面的代码如下

<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
    <title>Spring Landing Page</title>
</head>
<body>
<h2>Spring Landing Page</h2>
<p>点击下面的按钮获得一个简单的HTML页面</p>
<form:form method="GET" action="/StaticPages/staticPage">
<table>
    <tr>
    <td>
    <input type="submit" value="获取HTML页面"/>
    </td>
    </tr>
</table>  
</form:form>
</body>
</html>

final.html 的完整代码如下 -

<html>
<head>
    <title>Spring Static Page</title>
</head>
<body>

<h2>A simple HTML page</h2>

</body>
</html>
  1. 导出应用程序。右键单击应用程序,并使用导出> WAR文件选项,并将文件保存为HelloWeb.war 在Tomcat的webapps文件夹中。
  2. 单击“获取HTML页面”按钮访问staticPage服务方法中提到的静态页面。

Spring MVC页面重定向

  1. 创建一个名称为 PageRedirection 项目。
  2. 在 com.yiibai.springmvc 包下创建一个Java类WebController。
  3. 在jsp子文件夹下创建一个视图文件index.jsp,final.jsp。
  4. 创建所有源和配置文件的内容并导出应用程序

WebController.java

package com.yiibai.springmvc;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class WebController {

   @RequestMapping(value = "/index", method = RequestMethod.GET)
   public String index() {
       return "index";
   }

   @RequestMapping(value = "/redirect", method = RequestMethod.GET)
   public String redirect() {

      return "redirect:finalPage";
   }

   @RequestMapping(value = "/finalPage", method = RequestMethod.GET)
   public String finalPage() {

      return "final";
   }
}

Spring视图文件index.jsp的内容

  1. index.jsp是登录页面,这个页面将发送访问重定向方法的请求,将重定向这个请求到final.jsp页面中去
    index.jsp 文件
<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>Spring MVC页面重定向</title>
</head>
<body>
    <h2>Spring MVC页面重定向</h2>
    <p>点击下面的按钮将结果重定向到新页面</p>
    <form:form method="GET" action="/PageRedirection/redirect">
        <table>
            <tr>
                <td><input type="submit" value="页面重定向" /></td>
            </tr>
        </table>
    </form:form>
</body>
<html>

**final.jsp 文件 **

<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>Spring重定向页面</title>
</head>
<body>
    <h2>重定向页面...</h2>
</body>
</html>

Spring MVC文本框

  1. 在 com.yiibai.springmvc 包下创建Java类Student,StudentController
  2. 在jsp子文件夹下创建一个视图文件student.jsp,result.jsp
    Student.java
package com.yiibai.springmvc;

public class Student {
   private Integer age;
   private String name;
   private Integer id;

   public void setAge(Integer age) {
      this.age = age;
   }
   public Integer getAge() {
      return age;
   }

   public void setName(String name) {
      this.name = name;
   }
   public String getName() {
      return name;
   }

   public void setId(Integer id) {
      this.id = id;
   }
   public Integer getId() {
      return id;
   }
}

StudentController.java

package com.yiibai.springmvc;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.ui.ModelMap;

@Controller
public class StudentController {

   @RequestMapping(value = "/student", method = RequestMethod.GET)
   public ModelAndView student() {
      return new ModelAndView("student", "command", new Student());
   }

   @RequestMapping(value = "/addStudent", method = RequestMethod.POST)
   public String addStudent(@ModelAttribute("SpringWeb")Student student, 
   ModelMap model) {
      model.addAttribute("name", student.getName());
      model.addAttribute("age", student.getAge());
      model.addAttribute("id", student.getId());

      return "result";
   }
}
  1. 第一个服务方法是 student(),在ModelAndView对象中传递了一个名称为“command”的空对象, 因为如果要在JSP中使用form:form标签,spring框架需要一个名称为“command”的对象文件,当调用student()方法时,它返回student.jsp视图。
  2. 第二个服务方法addStudent()将在URL HelloWeb/addStudent 上的POST方法调用,将根据提交的信息准备模型对象。 最后,将从服务方法返回“result”视图,这将渲染result.jsp 页面。

student.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>Spring MVC表单之-输入框处理</title>
</head>
<body>

    <h2>学生信息</h2>
    <form:form method="POST" action="/TextBox/addStudent">
        <table>
            <tr>
                <td><form:label path="name">姓名:</form:label></td>
                <td><form:input path="name" /></td>
            </tr>
            <tr>
                <td><form:label path="age">年龄:</form:label></td>
                <td><form:input path="age" /></td>
            </tr>
            <tr>
                <td><form:label path="id">编号:</form:label></td>
                <td><form:input path="id" /></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="提交学生信息" /></td>
            </tr>
        </table>
    </form:form>
</body>
</html>

result.jsp-

<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>Spring MVC表单之-输入框处理</title>
</head>
<body>

    <h2>提交的学生信息如下 - </h2>
    <table>
        <tr>
            <td>姓名:</td>
            <td>${name}</td>
        </tr>
        <tr>
            <td>年龄:</td>
            <td>${age}</td>
        </tr>
        <tr>
            <td>编号:</td>
            <td>${id}</td>
        </tr>
    </table>
</body>
</html>

Spring MVC密码处理

  1. 创建一个名称为 Password 的动态WEB项目。
  2. 在 com.yiibai.springmvc 包下创建两个Java类User,UserController。
  3. 在jsp子文件夹下创建两个视图文件:user.jsp,userlist.jsp

User.java

package com.yiibai.springmvc;

public class User {

   private String username;
   private String password;

   public String getUsername() {
      return username;
   }
   public void setUsername(String username) {
      this.username = username;
   }

   public String getPassword() {
      return password;
   }
   public void setPassword(String password) {
      this.password = password;
   }
}

UserController.java

package com.yiibai.springmvc;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.ui.ModelMap;

@Controller
public class UserController {

   @RequestMapping(value = "/user", method = RequestMethod.GET)
   public ModelAndView user() {
      return new ModelAndView("user", "command", new User());
   }

   @RequestMapping(value = "/addUser", method = RequestMethod.POST)
   public String addUser(@ModelAttribute("SpringWeb")User user, 
      ModelMap model) {
      model.addAttribute("username", user.getUsername());
      model.addAttribute("password", user.getPassword());

      return "userlist";
   }
}
  1. 第一个服务方法user(),在ModelAndView对象中传递了一个名称为“command”的空User对象,因为如果在JSP文件中使用form:form标签,spring框架需要一个名称为“command”的对象。所以当调用user()方法时,它返回user.jsp视图。
  2. 第二个服务方法addUser()将根据URL => HelloWeb/addUser 上的POST方法请求时调用。根据提交的信息准备模型对象。 最后从服务方法返回“userlist”视图,这将呈现userlist.jsp视图

user.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
   <title>Spring MVC表单处理之-密码</title>
</head>
<body>

<h2>用户信息</h2>
<form:form method="POST" action="/Password/addUser">
   <table>
      <tr>
         <td><form:label path="username">用户名:</form:label></td>
         <td><form:input path="username" /></td>
      </tr>
      <tr>
         <td><form:label path="password">密码:</form:label></td>
         <td><form:password path="password" /></td>
      </tr>  
      <tr>
         <td colspan="2">
            <input type="submit" value="提交"/>
         </td>
      </tr>
   </table>  
</form:form>
</body>
</html>

userlist.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
    <title>Spring MVC表单处理之-密码</title>
</head>
<body>

<h2>提交的用户信息</h2>
   <table>
      <tr>
         <td>用户名:</td>
         <td>${username}</td>
      </tr>
      <tr>
         <td>密码:</td>
         <td>${password}</td>
      </tr>    
   </table>  
</body>
</html>

以上是关于SpringMVC的主要内容,如果未能解决你的问题,请参考以下文章

springmvc 分页查询的简单实现

Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]

Spring MVC 教程

spring 国际化 js怎么设置

AngularJS ——ngResourceRESTful APIs 使用

第二周作业