package com.malk.mcli.test; import com.alibaba.fastjson.JSON; import com.malk.repository.dao.primary.McAuthorizationDao; import com.malk.server.common.McR; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; /** * JSP在SpringBoot内运行 * - * 1. 在 file - project structure - facets 下, 添加web以及对应的路径. 注意 web.xml 直接添加, 完成后将 webapp 文件夹移动到 src/main 下面 * 2. 添加依赖, 注意 tomcat-embed-jasper 需要在子项目内引用才有效, 余下依赖引入主项目即可 * 3. 项目配置, (jsp为存放jsp文件夹) spring: mvc: view: --> prefix: /WEB-INF/jsp/ --> suffix: .jsp * 4. jsp文件有三种语法, JSP表达式 / EL表达式 / JSTL标签库; 正常书写 html, 数据获取通过 ModelAndView 传递进来 [c标签最实用] * 5. 在controller内返回 ModelAndView, 渲染为jsp文件名称, 参数传递可用 request.setAttribute / modelAndView.addObject * 6. 可选: 在启动配置内, environment - working directory 下填写 $MODULE_WORKING_DIR$ * 7. 进阶: 实现jsp效果后, 后续可通过 mvc 解耦视图和控制器, view 可使用模板依赖进行统一管理与继承, controller 可通过 servlet 统一接管 **/ @Slf4j @Profile({"dev", "test"}) @RestController @RequestMapping("/test/jsp") public class JSPTestController { @Autowired private McAuthorizationDao dao; @RequestMapping("show") ModelAndView showEmp() { List list = JSON.parseArray(JSON.toJSONString(dao.findAll()), Map.class); ModelAndView mav = new ModelAndView("/test"); mav.addObject("list", list); return mav; } @RequestMapping("/index") ModelAndView index(HttpServletRequest request) { //将用户信息保存到Request对象中 request.setAttribute("name", "pan_junbiao的博客"); request.setAttribute("blog", "https://blog.csdn.net/pan_junbiao"); request.setAttribute("remark", "您好,欢迎访问 pan_junbiao的博客"); //返回首页 return new ModelAndView("/index"); } @RequestMapping("/echarts") ModelAndView echarts() { return new ModelAndView("/echart"); } /** * test */ @GetMapping("test") McR test() { return McR.success(); } }