Web前端(九)-创建SpringBoot项目、web服务器(WebServer、Servlet、Controller)、SpringBoot介绍(处理静态、动态资源请求、客户端发出请求的几种方式、获取客户端传递参数的方式)
-
-
第二步:设置Group(域名反写)、Artifact、选择jdk版本(JDK8)
-
第三步:选择Web,勾选 Spring Web(默认Tomcat服务器),然后下一步完成即可!
注意:
-
工程创建完之后如果报错, 进入到boot1-1里面的pom.xml,刷新maven ;
-
如果还是不行,检查maven是否配置正确
-
如果确定maven配置没问题 , 把.m2下的repository文件夹删除,然后再次刷新maven,直到工程中不报错为止。
老师SpringBoot地址:https://gitee.com/teduliu/springboot05.git
服务器
-
服务器就是一台高性能电脑
web服务器
-
就是在一台高性能电脑上面安装了web服务软件(WebServer)
-
传奇老师带大家写的WebServer工程不仅包含了WebServer相关的功能,还包含了一些业务功能
WebServer做了哪些事儿?
-
负责建立了底层的网络连接
-
负责根据客户端请求的静态资源地址找到对应的静态资源文件,并返回给客户端
j举例:http://localhost:8088/myweb/login.html,webServer负责找到login.html文件返回给客户端
-
负责根据客户端请求的动态资源路径找到对应的Servlet,并执行
什么是Servlet?
-
WebServer是一个容器, WebServer本身不具备任何业务功能, 而Servlet是用于扩展WebServer业务功能的组件, Servlet就是用来实现具体业务功能的组件。
什么是Controller?
-
SpringMVC框架引入的Controller控制器的概念, 可以将多个有相关性的Servlet进行整合, 整合到一个Controller中, 可以大大提高开发效率
-
举例: RegServlet、LoginServlet、SelectServlet ,可以将以上三个Servlet整合到一个UserController中
-
SpringBoot
-
SpringBoot是目前主流的开发框架, 使用此框架可以非常便捷的将目前常用的一些其它框架引入到自己的工程中,省去了大量配置工作;
-
SpringBoot的核心思想: 约定大于配置 , 程序员不需要关心每一个框架具体的配置过程,直接使用SpringBoot所约定好的内容即可.
-
我们常说的SSM三大框架指的是 Spring, SpringMVC, Mybatis 这三个框架, 使用SpringBoot框架是为了更便捷的将三个框架引入到自己的工程之中, 使用SpringBoot引入这三个框架省去了很多配置操作。
处理静态资源请求
-
把静态资源文件放到工程的src/main/resources/static目录下, 启动工程,不需要添加任何代码,static里面的文件都可以被客户端访问到。
处理动态资源请求
-
在cn.tedu.boot11包下面创建controller包,并在里面创建HelloController
-
在类名上面添加 @Controller注解
-
在类里面创建一个hello方法,通过RequestMapping注解进行修饰,代码如下:
package com.example.boot11.controller;
import com.example.boot11.entity.Emp;
import com.example.boot11.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
运行工程时提示端口被占用
-
如果当前运行着一个web工程,此时再运行另外一个web时会报错, 关闭另外一个工程后再运行即可;
-
当工程异常关闭时也可能出现端口被占用, 此时没有可关闭的工程,有三种解决办法:
-
重启电脑
-
修改当前工程的端口号, 不再使用默认被占用的8080端口
-
找到application.properties配置文件
-
在里面添加 server.port=808x ,注意后面不要加“;”
-
-
可以百度查询 "8080端口被占用",找到如何查看占用8080端口的进程id,然后杀掉该进程(不推荐)
-
客户端发出请求的几种方式
-
在浏览器的地址栏中输入请求地址
-
在html页面中通过超链接发出请求
-
相对路径:相对的是页面当前所处位置
举例: 比如超链接存在于 http://localhost:8080/a/b/c/index.html 页面中
如果href="hello" 则表示的地址为 http://localhost:8080/a/b/c/hello
-
绝对路径:
举例:比如超链接存在于 http://localhost:8080/a/b/c/index.html 页面中
如果href="/hello" 则表示的地址为 http://localhost:8080/hello
-
在html页面中通过form表单发出请求
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>Hello SpringBoot!</h1>
<!--相对路径-->
<a href="hello">相对路径</a>
<!--绝对路径-->
<a href="/hello">绝对路径1</a>
<!--只有访问站外资源时才推荐使用下面这种方式-->
<a href="http://localhost:8080/hello">绝对路径2</a>
<h3>通过form表单发请求</h3>
<form action="/hello">
<input type="text" name="info">
<input type="submit">
</form>
</body>
</html>
获取客户端传递参数的几种方式
-
通过HttpServletRequest对象获取参数
String info = request.getParameter("info");
-
SpringMVC框架提供的方式:
-
直接在处理请求的方法参数列表位置声明传递过来的参数名的方式
-
将传递过来的参数直接封装到对象中
-
@ResponseBody
-
此注解是SpringMVC中提供的注解, 作用: 可以以返回值的方式给客户响应数据,相比较PrintWriter要简单很多。
package com.example.boot11.controller;
import com.example.boot11.entity.Emp;
import com.example.boot11.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;