一次参加SpringBoot小项目的收获

SpringBoot目录

Controller返回值跳转网页

在有“@Controller”注解标注的类,如果有个方法的返回值为String,SpringBoot会根据“application.properties”配置文件中的配置信息在“templates”文件中(文件夹不固定,可以在File菜单中指定Web文件夹),找到名为 <返回值 + 指定后缀> 的网页。

templates目录和static目录

这两个目录在引入Thymeleaf组件之后用于存放动态页面和静态页面。

templates目录下的页面不能被直接访问,而static目录下的页面可以被直接访问。

templates目录下的网页可以通过Controller的返回值来进行访问。

从templates目录下的网页跳转至static目录下的网页直接跳转至"xxxx.html"即可。

从static目录下的网页跳转至templates目录下的网页可以通过相关的Controller进行访问。

Controller层

@Controller与@RestController的区别

@RestController集成了@Controller和@ResponseBody两个注解。

在用@Controller标注的Controller类中,直接用@RequestMapping来拦截请求可以顺利拦截到请求,但是无法对请求做出响应,必须要用@RequestBody来标注方法。

如果想要在Controller类中,通过方法的返回值来直接跳转至某个页面,则该Controller不可以用@RestController或者在@Controller之后再用@RequestBody。

@RequestParam

该注解用于获取由前端页面发来的数据。

@RequestParam(“paramName”),这样可以获取指定名称的变量。

Service层

在引入MyBatisPlus组件之后,如果基础的SQL查询无法满足需求,则可以通过条件构造器的方式来构造查询。

例如,当前的Service继承ServiceImpl<UserDao,UserEntity>,实现了UserService接口,则可以使用如下代码实现对“name”字段和“phone”字段的模糊查询。

List<User> res = this.baseMapper.selectList(new QueryWrapper<User>()
                .like("name",userName).like("phone",userPhone));

实体类

在引入MyBatisPlus组件之后,可以使用@TableName(“TableName”)来指定实体类对应的表。

使用@TableId(type = IdType.AUTO)来指明主键自增。

html页面

登录模块

在登录校验时,页面向Controller发送用户名和密码之后,Controller向Session中写入某些信息之后,返回验证结果。

写在Session中的信息,可以用于验证用户是否是登录状态。

关于Session

servlet容器使用此接口在HTTP客户端和HTTP服务器之间创建会话。会话在指定的时间段内持续存在,来自用户的多个连接或页面请求。会话通常对应于一个用户,该用户可能多次访问该站点。服务器可以通过多种方式维护会话,例如使用cookie或重写URL。(缓存部分信息)

代码示例

在Controller层中声明如下方法

Public String requestLogin(@RequestParam String username, @RequestParam String password, HttpServletRequest request)

获取Session:

HttpSession session = request.getSession();

向Session中写入名为“loginUser”的user对象:

session.setAttribute("loginUser",user);

获取Session中名为“loginUser”的变量:

session.getAttribute("loginUser");

关于ajax

Type属性的取值

默认为“GET”,可以为“POST”或者“GET”。

data属性的取值

如果要发送后台JSON串可以使用,JSON.stringify(paramName)来将js对象转换为JSON串。

关于BootstrapTable

关于使用

 $('#table').bootstrapTable('method', parameter);

具体方法名以及作用见:https://bootstrap-table.com/docs/api/methods/

在BootstrapTable中获取当行的值

在生成表格时,如果要加入操作按钮的话,需要在对应的列(columns)数组的对应的元素内加入:

events : operateEvents

生成如下两个按钮:

formatter : function (value, row, rowIndex) {
    return [
        '<button id="updateInfo" type="button" class="UPDATE layui-btn layui-btn-warm" data-toggle="modal" data-target="#updataInfo">修改</button>&nbsp;' +
        '<button id="deleteInfo" type="button" class="DELETE layui-btn layui-btn-danger" data-toggle="modal" data-target="#deleteInfo"><i class="layui-icon"></i>删除</button>'
    ]
}

再使用如下JavaScript代码:

"click #deleteMasterInfo": function (e, value, row, index) {
    //获取信息
    var useId = row.id;
    var useName = row.name;
    var useAddress = row.address;
    var usePhone = row.phone;
    //给输入框写入初始值
    document.getElementById('deleteId').value =  useId;
    document.getElementById('deleteName').value = useName;
    document.getElementById('deleteAddress').value = useAddress;
    document.getElementById('deletePhone').value = usePhone;
}

即可获取按钮所在行的值、序号等。

过滤器

关于注解的使用

@WebFilter注解

使用方法:

@WebFilter(filterName = "过滤器的名称",urlPatterns = {"被过滤的访问地址"})

值的注意的是如果想拦截所有对html文件的访问则“urlPatterns = {"*.html"}”,不用加“/”。

@ServletComponentScan注解

此注解需要在xxxApplication类中使用,主要是用于去获取过滤器。

关于代码

需要继承Filter接口(javax.servlet),并实现init()、doFilte()和destroy()。

在doFilter方法中实现主要的过滤逻辑:

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) servletRequest;
    HttpServletResponse response = (HttpServletResponse) servletResponse;
    HttpSession session = request.getSession(false);
    String uri = request.getRequestURI();

    System.out.println("请求的uri地址:" + uri);

    if (session != null && session.getAttribute("loginUser") != null){
        //如果有loginUser对象,则已经登录
        filterChain.doFilter(request,response);
    }else {
        response.sendRedirect(request.getContextPath()+"/");
    }
}
发布了24 篇原创文章 · 获赞 8 · 访问量 1881

猜你喜欢

转载自blog.csdn.net/qq_40462579/article/details/89912996