spring-mvc框架学习(二)

6、配置基本完成,需要编写 controller 中的内容,用于定义view 目录下的页面展示的内容,在src/main/java 下新建包com.springmvc.controller,其下创建两个java 文件,分别为HelloController.java 与sum.java,内容分别如下:


package com.springmvc.controller;

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

//url:  http://localhost:8080/Spring-mvc/hello/login

//告诉DispatcherServlet相关的容器, 这是一个Controller,
@Controller

// 类级别的RequestMapping,告诉DispatcherServlet由这个类负责处理URL。
// HandlerMapping依靠这个标签来工作
@RequestMapping(value = "/hello")
public class HelloController {

	// 方法级别的RequestMapping, 限制并缩小了URL路径匹配,同类级别的标签协同工作,最终确定拦截到的URL由那个方法处理
	// 并指定访问方法为GET
	@RequestMapping(value = "/login", method = RequestMethod.GET)
	public String HelloWorld(Model model) {

		model.addAttribute("message", "大家好"); // 传参数给前端

		// 视图渲染,/WEB-INF/view/HelloWorld.jsp
		return "HelloWorld"; // 页面的名称,根据此字符串会去寻找名为HelloWorld.jsp的页面
	}

	@RequestMapping("/login2")
	public ModelAndView login() {
		return new ModelAndView("login2");
	}

	@RequestMapping("/login1")
	public ModelAndView login1() {
		return new ModelAndView("login1");
	}
}


package com.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 等差数列求和
 */
@Controller
@RequestMapping("/test")
public class sum {

    // public static void main() {
    // sum sum = new sum();
    // long num = 1999999999;
    //
    // long startTime = System.currentTimeMillis();
    // long result = sum.sum_total(num);
    // long endTime = System.currentTimeMillis();
    // System.out.println(result);
    // System.out.println("程序运行时间: " + (endTime - startTime) + "ms");
    // }

    @RequestMapping(value = "/sum.do")
    public String sum_total(long num, Model model) {
        long sum = 0;
        for (long i = 1; i <= num; i++) {
            sum = sum + i;
        }
        model.addAttribute("result", sum);
        return "sum";
    }
}

此两个文件,一个实现的是通过 /hello/login、/hello/login1、/hello/login2三个首页的对比,其中有 jsp 和 html

sum.java 则实现了一个加法计算页,为此需要新建几个 jsp 文件

项目结构目录如下:新建的页面文件,分别命名为HelloWorld.jsp、login1.html、login2.html 与 sum.jsp,其中在根目录下创建了 sum.jsp 文件,与view 下的 sum.jsp 内容有所区别,一个是输入页面,一个是结果页面


HelloWorld.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>HelloSpringMVC</title>

</head>

<body>

<h1>message:${message}</h1>

<h1>this is test spring mvc</h1>

</body>

</html> 


login2.html 文件内容拷自网易 lofter社区,主要为了展示h5页面,代码不贴了


sum.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>

<h1>计算</h1>

<form action="/Spring-mvc/test/sum.do" method="get">

    输入入参:<input type="text" name="num"/>

    <input type="submit" value="submit">

</form>


</body>

</html> 


结果页代码:

<%@ 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>计算</title>

</head>

<body>

<h1>结果:${result}</h1>


</body>

</html> 

最终项目发布后,效果如下:


至此,一个最简单的计算给定数值的递减数列和功能项目已完成,能够实现简单的前后台交互,其中对.html 格式文件的支持主要是考虑美化效果,目前各类网站前端基本都是基于 h5完成,但时间及技术原因,本次未准备将计算前端及结果页美化,原理了解就好,over~


ps:中间有次启动有一次报错,如下,需要对项目做如下设置,添加 maven 路径即可

严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener

java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener


相关阅读:spring-mvc框架学习(一)

spring-mvc框架学习(三)

本文来自网易实践者社区,经作者李亚松授权发布。