前提:已将Spring Tool Suite插件(STS)集成至Eclispe,可看前篇文章。
创建项目
File-New-Others
》》》》》》》运行项目》》》》》》》
控制台打印结果,项目启动成功。
》》》》》》通过浏览器访问》》》》》》》
服务已正常提供,该页面的含义是:/请求没有找到。------接下来我们定义此服务路径。
编写请求处理器Controller
package com.sda.index;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class IndexController {
@GetMapping("/")
public String index() {
return "Hello World";
}
}
》》》》》》重新运行》》》》》》
该路径对应的服务不是已经编写了?怎么还没有呢?怎么个情况?---我看网上其它的例子都已经运行了呢?
答疑上节问题
DemoApplication和ServletInitializer是自动生成的。
---------ServletInitializer-------------------继承SpringBootServletInitializer,sources这个方法我理解的大概意思是根据组件之间的关系创建应用程序上下文。
-------------DemoApplication----------------注解为@SpringBootApplication扫描当前包及其子包下的组件。
IndexController并没有位于com.sda.demo包及其子包下,因此没有被扫描到。
将包名进行修改,重新测试。
配置访问应用的上下文和端口
应用运行在内置web服务器中(一般称之为开发服务器),端口是8080,从访问路径看应用是被放在开发服务器的根目录下。
》》》》修改application.properties文件》》》》》
server.port=8081
server.servlet.context-path=/demo
完成请求-页面过程
上面的请求直接返回数据,适用于ajax和前后端分离的情景,如果是单体式应用,往往需要转到页面进行渲染。
页面默认是放在src/main/webapp中,默认并没有创建,需要手动创建webapp源文件夹,在webapp中在创建一个WEB-INF文件夹。
内置的开发服务器不支持jsp解析,需要在pom.xml中引入如下jar包。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
配置文件
server.port=8080
server.servlet.context-path=/demo
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
Controller
package com.sda.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class TestController {
@GetMapping("/test/test1")
public ModelAndView test1(ModelAndView mv) {
System.out.println("-----------");
mv.addObject("msg", "This is a Msg");
mv.setViewName("test/test");
return mv;
}
}
JSP页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
信息:${msg}
</body>
</html>
运行结果