目录
1、技术框架
SpringBoot 管理项目中的对象
Spring MVC: 处理请求
MyBatis:处理与数据库的交互
Redis:高性能数据库(第四章)
Kafka:消息队列服务器(第五章)
Elasticsearch:搜索引擎(第六章)
Spring Security:设置用户权限
Spring Actuator:监控系统,运维使用
2、杂项
(1)构建spring 项目:使用Spring initializr
(2)spring boot(构建项目): 前期依赖,自动配置,端点监控(监视项目运行状况)
(3) (https://Spring.io document) Spring全家桶
Spring Framework : 全框架
Spring Boot
Spring Clound:将项目进行才分为子项目
Spring Cloud Data Flow :整合数据
(4)在@SpringBootApplication 注解所在内的包中(包括所有的子包),只要被添加上@Controller(处理前端请求),@Component(所有组件),@Service(业务组件),@Repository(数据库访问)中任何一个组件,那么这个方法将会自动成为bean被添加到仓库中,在使用mybatie时还可以使用@Mapper也能达到同样的效果
(5)得到仓库中的bean
import com.nowcoder.community.dao.AlphaDao;
import org.assertj.core.api.Abstract2DArrayAssert;
import org.junit.jupiter.api.Test;
import org.springframework.beans.BeansException;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationContextFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.test.context.ContextConfiguration;
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
class CommunityApplicationTests implements ApplicationContextAware {
// @Test
// void contextLoads() {
// }
private ApplicationContext applicationContext; //声明一个仓库实例
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext; //得到spring容器(仓库)
}
@Test
public void testApplicationContext(){
// System.out.println(this.applicationContext);
AlphaDao alphaDao = this.applicationContext.getBean(AlphaDao.class); //从仓库中,取出指定的bean(AlphaDao)
System.out.println(alphaDao.select());
}
}
(6)网络中服务端的三层架构
1)表现层(controller):MVC,model,view,controller。前端控制器:DispatcherServlet,管理表现层组件
2)业务层(service)
3)数据层(Dao、entity,mapper.xml)
(7)模板引擎 thymeleaf,生成动态的html文件
由模板文件(静态html)和model(后台参数)通过模板引擎生成动态html文件
常用语法:标准表达式,判断与循环,模板布局(复用页面)
(8)获取请求对象,响应对象
HttpServletRequest request :前端请求数据,自动获得前端对象
HttpServletResponse response:前端响应数据,自动将后台数据po到前端
@RequestMapping("/http")
public void http(HttpServletRequest request, HttpServletResponse response) throws IOException {
//获取请求数据
System.out.println(request.getMethod());
System.out.println(request.getServletPath());
//得到请求行中的内容,请求行中的内容是map类型
Enumeration<String> enumeration = request.getHeaderNames();
while (enumeration.hasMoreElements()){
String name = enumeration.nextElement(); //得到key
String value = request.getHeader(name);
System.out.println(name + ": " + value);
}
//返回响应数据
response.setContentType("text/html;charset = utf-8"); //设置返回数据的类型
PrintWriter writer = response.getWriter();
writer.write("<p> ok </p>");
}
(9)渲染前端动态网页
后台代码
//生成动态前端页面,文件默认存放在templates中
@RequestMapping(path = "/teacher",method = RequestMethod.GET) //将数据给到前端页面一般使用get,
public ModelAndView getTeacher(){
ModelAndView mav = new ModelAndView();
mav.addObject("name","keke");
mav.addObject("age",18);
mav.setViewName("/demo/view");//设置那个对应的前端页面使用当前mav参数
return mav;
}
前端页面: 前端存放在template/demo/view