Java Web——SpringBoot

    技术2023-05-11  103

    1 静态网站

    1.1 环境准备

    电脑已经安装好IDEA和JDKSpring官网下载包 下载后解压,导入idea File->New->Project from Existing Sources->选择刚才解压的文件,等待下载完成。

    1.2 开发

    创建index.html页面 启动主程序main 访问:localhost:8080/index.html(未修改端口时)

    2 动态网站

    2.1 环境准备

    电脑已经安装好IDEA和JDKSpring官网下载包 下载后解压,导入idea File->New->Project from Existing Sources->选择刚才解压的文件,等待下载完成。配置数据库和模板参数 application.properties文件中配置 #模板的后缀 spring.freemarker.suffix=.html #模板路径 数据spring.freemarker.template-loader-path=classpath:/templates/ #spring.datasource.driver-class-name=com.mysql.jdbc.Driver 一般配置 #数据库驱动(com.mysql.cj.jdbc.Driver是新版本的) spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #数据库url,e-book是数据库名 spring.datasource.url=jdbc:mysql://localhost:3306/e-book?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true #数据库用户名 spring.datasource.username=root #数据库密码 spring.datasource.password=1234567890

    2.2 开发

    注意:可以使用模板,也可以不使用

    区别:只有Controller的注解不同 - 使用模板:@Controller - 不使用模板: @RestController(不需要写HTML页面,直接返回数据库查询到的数据)

    使用模板

    普通类(与数据库中的字段一致) public class SpClass { private int userID; private String userName; private String userPwd; private String userRight; public int getUserID() { return userID; } public String getUserName() { return userName; } public String getUserPwd() { return userPwd; } public String getUserRight() { return userRight; } public void setUserID(int userID) { this.userID = userID; } public void setUserName(String userName) { this.userName = userName; } public void setUserPwd(String userPwd) { this.userPwd = userPwd; } public void setUserRight(String userRight) { this.userRight = userRight; } } 接口(操作数据库) @Mapper public interface SpMapper { //与数据库操作关键字一致:@Select @Insert @Delete @Update @Select("select*from user where userID=#{userID}") //@Param确保参数一致:#{a}和@Param("a")中的参数必须一致,后面的参数可以不一样 List<User> selectUser(@Param("userID")Integer userID); } Controller @Controller public class SpController { //Spring容器帮助建立Mapper对象,不能直接使用 @Resource private SpMapper spMapper; //浏览器访问路径 @RequestMapping("/user") public String index(){ //返回的是模板的名称,不能加.html,在配置文件中已经配置了扩展名 return "test"; } //user.json就是ajax请求的路径 @RequestMapping(value = "user.json", method = {RequestMethod.GET}) //页面响应的数据 @ResponseBody public String user(@RequestParam(value = "userID") Integer userID){ List<User> user = spMapper.selectUser(userID); //转换为json字符串 String s = JSON.toJSONString(user); System.out.println(user); System.out.println(s); return s; } } 模板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../js/jquery.js"></script> <style> div{ width:300px; height:300px; margin-left:100px; padding: 5px; border:1px solid blue; } #info { width:200px; height:150px; margin:5px auto; border:1px solid greenyellow; } </style> </head> <body> <div> 用户名:<input type="text" name="userID" id="name"> <input type="button" value="查询" id="sub"> <div id="info"> </div> </div> <script> $(function () { $("#sub").click(function () { $.ajax({ url:"/user.json", dataType:"json", type:"get", data:{"userID":$("#name").val()}, success:function (data) { var html="<ul><li>学号:"+data[0].userID+"</li><li>姓名:"+data[0].userName+"</li><li>权限:"+data[0].userRight+"</li></ul>"; $("#info").append(html); } }); }); }) </script> </body> </html>

    3 请求 响应 会话

    3.1 HttpServletRequest request

    request.getHeader():获取请求头部信息request.getParameter():获取请求的参数数据

    3.2 HttpServletResponse response

    response.setHeader():设立响应头部信息

    3.3 HttpSession session

    session.getAttribute和session.setAttribute:获取和设置属性

    4 过滤器

    @ServletComponentScan({“过滤器包名”}) 写在主程序中,告诉过滤器的位置过滤器 /*过滤器 * urlPatterns设置拦截规则 * 精确匹配:/index.html * 目录匹配:/hello/* * 扩展名匹配:*.html */ @WebFilter(filterName = "MyFilter",urlPatterns = {"*.html"}) public class MyFilter implements Filter { //快捷键ctrl+i快速生成接口方法 //初始化 @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("start"); } //拦截 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("requesting"); //允许通过 chain相当于一把钥匙 chain.doFilter(request,response); //给页面数据 //强制类型转换 HttpServletResponse response = (HttpServletResponse)response; HttpServletRequest request = (HttpServletRequest)request; //会话 HttpSession session = request.getSession(); //访问地址 String url = request.getRequestURI(); //请求登录页面,则通过 if(url.startsWith("/login")){ chain.doFilter(request,response); }else { //权限验证 //用户已经登录,则通过 if(session.getAttribute("user")!=null){ chain.doFilter(request,response); }else { //用户未登录,则不通过,并提示未登录,两种方式 //1.PrintWriter是输出流对象,不太使用 PrintWriter writer=response1.getWriter(); writer.append("no login"); writer.flush(); writer.close(); //2.直接返回字符·串 return "no login"; } } } //销毁 @Override public void destroy() { System.out.println("end"); } }
    Processed: 0.018, SQL: 9