Java Web——SpringBoot

1 静态网站

1.1 环境准备

  • 电脑已经安装好IDEA和JDK
  • Spring官网下载包
    在这里插入图片描述
    在这里插入图片描述
  • 下载后解压,导入idea
    File->New->Project from Existing Sources->选择刚才解压的文件,等待下载完成。

1.2 开发

  • 创建index.html页面
    在这里插入图片描述
  • 启动主程序main
    在这里插入图片描述
  • 访问:localhost:8080/index.html(未修改端口时)

2 动态网站

2.1 环境准备

  • 电脑已经安装好IDEA和JDK
  • Spring官网下载包
    在这里插入图片描述
    在这里插入图片描述
  • 下载后解压,导入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");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值