一、Mybatis-generator-gui

下载地址:https://github.com/LittlePageProgram/mybatis-generator-gui.git

使用方法:填写相关项,点击生成

注意项:

1.有关EntityExample,需要拖进mapper层

2.有关修改XML配置信息,相应的example也需要进行调整到mapper层

案例:

service层

package com.littlepage.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.littlepage.entity.User;
import com.littlepage.mapper.UserExample;
import com.littlepage.mapper.UserMapper; @Service
public class UserService { @Autowired
UserMapper userMapper; public List<User> selectAll() { UserExample example=new UserExample();
example.createCriteria(); return userMapper.selectByExample(example); } public void add() {
UserExample example=new UserExample();
userMapper.deleteByExample(example);
} public boolean selectByLoginNameAndPassword(String name,String password) {
UserExample example=new UserExample();
System.out.println(name);
System.out.println(password);
example.createCriteria().andNameEqualTo(name).andPasswordEqualTo(password);
List<User> li=userMapper.selectByExample(example);
System.out.println(li);
return li.size()!=0 ;
}
}

二、PageHelper 一个好用的分页插件

public List<User> selectAll(int pageNum,int pageSize) {
PageHelper.startPage(pageNum, pageSize);
UserExample example=new UserExample();
example.createCriteria(); return userMapper.selectByExample(example); }

快速传值分页,这个原理运用了AOP编程

三、前后端分离

理论:

后端仅仅提供接口,前端进行获取数据和进行跳转。

优点:

1、对服务器的压力减小到最小

2、后台错误不会直接反映到前台,错误接秒较为友好

3、前后台各尽其职可以最大程度的减少开发难度。

实现:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<link rel="stylesheet" href="/css/bootstrap.min.css" />
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script>
$(function (){
$("#login_btn").click(function (){
var loginName=$('#loginName').val();
var password=$('#password').val();
if(loginName==''||password==''){
$('#tip').html('用户名密码不能为空');
$('#tip').css('color','red');
return false;
}else{
var url='/account/validateAccount';
var args={loginName:loginName,password:password}; $.post(url,args,function(data){
if(data=='success'){
window.location.href='/account/success';
}else{
$('#tip').html('密码错误');
$('#tip').css('color','red');
}
console.log(data);
})
return false;
}
})
})
</script>
<body>
<div align="middle">
<br />
<br />
<hr/>
<br />
<div align="middle">
<h3>登录界面</h3>
</div>
<br />
<br />
<form action="/account/validateAccount" method="post">
<input type="text" placeholder="用户名" id="loginName" /><br /><br />
<input type="password" placeholder="密码" id="password" /><br /><br />
<div><span id="tip"></span></div><br />
<button id="login_btn" type="submit" >登录</button>
</form>
</div>
</body>
</html>

HTML页面

package com.littlepage.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import com.littlepage.entity.User;
import com.littlepage.service.UserService; @Controller
@RequestMapping("/account")
public class AccountController { @Autowired
UserService userService; @RequestMapping("/login")
public String loginPage() {
return "login";
} @RequestMapping("/validateAccount")
@ResponseBody
public String list(@RequestParam("loginName")String loginName,@RequestParam("password")String password) {
if(userService.selectByLoginNameAndPassword(loginName, password)) {
return "success";
}else {
return "false";
} } @RequestMapping("/success")
public String successPage() {
return "account/success";
} @RequestMapping("/list")
@ResponseBody
public List<User> list() {
return userService.selectAll(2, 2);
}
}

控制器

四、权限实现

package com.littlepage.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; @WebFilter(urlPatterns = "/*")
@Component
public class AccountFilter implements Filter { private final String[] IGNORE_URI= {"index","css","js"}; @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpReq=(HttpServletRequest)request;
HttpServletResponse httpRes=(HttpServletResponse)response; //1.从session找Account对象
//找到就全部放行
//找不到就执行2 //1.判断URI是不是在Ignore列表里,在就放行
String uri=httpReq.getRequestURI(); for (String string : IGNORE_URI) {
if(uri.contains(string)) {
System.out.println("contains");
chain.doFilter(request, response);
}
}
} @Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("启动权限filter");
}
}

SpringBootMybatis02 mybatis-generator-gui|pageHelper|前后端分离|Filter权限实现的更多相关文章

  1. vue项目实践-前后端分离关于权限的思路

    前后端分离后权限的思路 最近看到许多关于权限的思路,但好像都是使用动态加载路由的方式,现在也分享下我在项目中使用的解决方案. 前后端分离关于权限的处理每个人都不一样,根据项目选择制定合适的方案就好 我 ...

  2. 基于spring security 实现前后端分离项目权限控制

    前后端分离的项目,前端有菜单(menu),后端有API(backendApi),一个menu对应的页面有N个API接口来支持,本文介绍如何基于spring security实现前后端的同步权限控制. ...

  3. Springboot + Vue + shiro 实现前后端分离、权限控制

    本文总结自实习中对项目对重构.原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelA ...

  4. Spring Boot + Vue + Shiro 实现前后端分离、权限控制

    本文总结自实习中对项目的重构.原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelA ...

  5. 基于 Spring Security 的前后端分离的权限控制系统

    话不多说,入正题.一个简单的权限控制系统需要考虑的问题如下: 权限如何加载 权限匹配规则 登录 1.  引入maven依赖 1 <?xml version="1.0" enc ...

  6. Kitty基于Spring Boot、Spring Cloud、Vue.js、Element实现前后端分离的权限管理系统

    源码地址:https://gitee.com/liuge1988/kitty 软件架构 后端架构 开发环境 IDE : eclipse 4.x JDK : JDK1.8.x Maven : Maven ...

  7. 前后端分离djangorestframework——权限组件

    权限permissions 权限验证必须要在认证之后验证 权限组件也不用多说,读了源码你就很清楚了,跟认证组件很类似 具体的源码就不展示,自己去读吧,都在这里: 局部权限 设置model表,其中的ty ...

  8. 前后端分离进行权限管理之后端API返回菜单及权限信息(三)

    一.动态菜单API的生成 1.API #菜单信息 url(r'^menus$', views.MenuModelView.as_view({"get": "list&qu ...

  9. 从壹开始前后端分离[.NetCore] 37 ║JWT完美实现权限与接口的动态分配

    缘起 本文已经有了对应的管理后台,地址:https://github.com/anjoy8/Blog.Admin 哈喽大家好呀!又过去一周啦,这些天小伙伴们有没有学习呀,已经有一周没有更新文章了,不过 ...

随机推荐

  1. 使用KFold进行训练集和验证集的拆分,使用准确率和召回率来挑选合适的阈值(threshold) 1.KFold(进行交叉验证) 2.np.logical_and(两bool数组都是正即为正) 3.np.logical_not(bool数组为正即为反,为反即为正)

    ---恢复内容开始--- 1. k_fold = KFold(n_split, shuffle) 构造KFold的索引切割器 k_fold.split(indices) 对索引进行切割. 参数说明:n ...

  2. 使用django-cors-headers 来解决跨域问题

    在settting里面这样配置 ALLOWED_HOSTS = ["*"] # Application definition INSTALLED_APPS = [ 'django. ...

  3. 新建一个浏览器APP

    安卓开发环境准备好了,试试新建一个浏览器程序吧 1.Start a new Android Studio Project 2.选这个像微信一样的样式 3.选择语言和版本 4.等待创建完成,拖一个Web ...

  4. leetcode 116填充每个节点的下一个右侧节点指针

    time O(n) ,sapce O(n) /* // Definition for a Node. class Node { public: int val; Node* left; Node* r ...

  5. puppeteer - 操作支付宝报“操作频繁”错误的思考

    我这里想要实现的是通过转账到支付宝的方式判断一个手机号是否注册过支付宝.但查询收款人的网络请求很复杂分析不出来,使用 puppteer 也是没有解决 "操作频繁" 的问题(应该还有 ...

  6. 自定义ListView实现下拉刷新,下拉加载的功能

    package com.loaderman.myrefreshlistviewdemo; import android.content.Context; import android.util.Att ...

  7. Cascader 级联选择器

    当一个数据集合有清晰的层级结构时,可通过级联选择器逐级查看并选择. 基础用法 有两种触发子菜单的方式 只需为 Cascader 的options属性指定选项数组即可渲染出一个级联选择器. 通过expa ...

  8. Ubuntu虚拟机共享文件夹的1234

    第一 在虚拟机内添加路径 进入虚拟机软件,点开工具栏上方虚拟机,点击设置,选择选项,查看共享文件夹,点击添加,下一步 第二: 第三 点击启用此共享 点击完成 第四 查看共享的文件 在mnt里可以看到S ...

  9. 【嵌入式开发】树莓派h264实时视频监控

    FishXX之前用VLC串流输出视频,在电脑上需要VLC播放器.试了一下,感觉还是有点延时. 今天发现一个更加流畅,也不需要VLC播放器的树莓派远程视频监控方法,直接在浏览器中打开即可. 地址:htt ...

  10. python 并发编程 多进程 生产者消费者模型总结

    生产者消费者模型总结 生产者消费者模型什么时候用? 1.程序中有两类角色 一类负责生产数据(生产者) 一类负责处理数据(消费者) 2.引入生产者消费者模型为了解决的问题是 平衡生产者与消费者之间的速度 ...