此阶段学习的内容主要是如何接收客户端请求以及如何做出响应
web服务软件是不具备任何业务功能的,可以理解为是一个容器,用来实现具体业务功能的组件(组件指的Servlet,Controller是将多个有相关性的Servlet整合到了一个文件中)
Web服务软件做了那些事儿?
- 搭建底层的网络连接
- 负责根据客户发出的静态资源请求找到对应的静态资源文件并响应给客户端
- 负责根据客户端发出的动态请求找到对应的Controller里面的方法并执行
如果不使用SpringBoot框架创建Maven工程, 工程里面如果需要添加其它框架, 除了需要在pom.xml文件中添加大量的依赖信息以外,很多的框架还需要有对应的xml配置文件, 在xml配置文件中还需要书写大量的配置信息, 这些工作都需要程序员完成, 使用SpringBoot框架创建工程时,如果需要引入其它框架只需要通过打钩的方式即可把其它框架引入到自己的工程 不需要写配置文件,SpringBoot框架帮助程序员做好了其它工作
1.创建SpringBoot工程时需要将 url地址改成https://start.springboot.io
2.修改工程名, group,Java版本
3.勾选需要引入到工程中的框架
4.创建完工程后在Build页卡中显示 绿色的对勾
5.如果没有绿色对勾 而是红色报错的话,按照一下方案解决:
刷新Maven
如果刷新maven没有解决, 检查maven配置是否正确, 如果正确 删除.m2文件夹下的repository文件夹, 然后再次刷新maven, 如果还没有解决 删除工程重新创建.
6.如何测试工程是否创建成功?
在static文件夹下 创建index.html页面
启动工程, 浏览器地址栏中访问: localhost:8080
<a href="hello">相对路径a>
相对路径:相对于页面所处位置
localhost:8080/index.html
如果访问 localhost:8080/abc/index.html
localhost:8080/abc/hello 去掉一个index.html加上hello
<a href="/hello">绝对路径1a>
绝对路径: /代表的是当前工程的根路径 http://localhost:8080/
<a href="http://localhost:8080/hello">绝对路径2a>
绝对路径,当访问站外资源是使用上述方式
此注解的作用是声明当前类为控制器,当Web服务软件接收到请求后,会找到所有的控制器类,然后通过请求的路径找到对应的方法
前后写法对比
之前
@Controller
public class HelloController {
@RequestMapping("/hello")
public void hello(HttpServletResponse response) throws IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.println("请求成功!");
pw.close();
}
}
之后
@Controller
public class HelloController {
@RequestMapping("/hello")
@ResponseBody //此注解的作用是通过返回值的方式给客户端响应数据
public String hello(){
return "成功";
}
}
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<h1>传参测试h1>
<h2>第一种h2>
<form action="/p1">
<input type="text" name="info">
<input type="submit">
form>
<h2>第二种h2>
<form action="/p2">
<input type="text" name="name" placeholder="名字">
<input type="text" name="age" placeholder="年龄">
<input type="submit">
form>
<h2>第三种h2>
<form action="/p3">
<input type="text" name="name" placeholder="员工姓名">
<input type="text" name="sal" placeholder="员工工资">
<input type="text" name="job" placeholder="员工工作">
<input type="submit" value="添加">
form>
body>
html>
@Controller
public class ParamController {
@RequestMapping("/p1")
@ResponseBody
public String p1(HttpServletRequest request){
String info = request.getParameter("info");
return "接收到的参数:"+info;
}
@RequestMapping("/p2")
@ResponseBody
public String p2(String name,int age){
return name+":"+age;
}
@RequestMapping("/p3")
@ResponseBody
public String p3(Emp emp){
return emp.toString();
}
}
@Controller
public class BMIController {
@RequestMapping("/bmi")
@ResponseBody
public String bmi(double h,double w){
double bmi=w/(h*h);
if(bmi<18.4){
return "兄弟你瘦了";
}
if(bmi<23.9){
return "身体倍儿棒";
}
if(bmi<27.9){
return "微微胖";
}
return "该运动起来了";
}
}