把生命浪费在美好事物上2018-06-27 18:256、配置基本完成,需要编写 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框架学习(一)
本文来自网易实践者社区,经作者李亚松授权发布。