SpringBootMybatis02 mybatis-generator-gui|pageHelper|前后端分离|Filter权限实现
一、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权限实现的更多相关文章
- vue项目实践-前后端分离关于权限的思路
前后端分离后权限的思路 最近看到许多关于权限的思路,但好像都是使用动态加载路由的方式,现在也分享下我在项目中使用的解决方案. 前后端分离关于权限的处理每个人都不一样,根据项目选择制定合适的方案就好 我 ...
- 基于spring security 实现前后端分离项目权限控制
前后端分离的项目,前端有菜单(menu),后端有API(backendApi),一个menu对应的页面有N个API接口来支持,本文介绍如何基于spring security实现前后端的同步权限控制. ...
- Springboot + Vue + shiro 实现前后端分离、权限控制
本文总结自实习中对项目对重构.原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelA ...
- Spring Boot + Vue + Shiro 实现前后端分离、权限控制
本文总结自实习中对项目的重构.原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelA ...
- 基于 Spring Security 的前后端分离的权限控制系统
话不多说,入正题.一个简单的权限控制系统需要考虑的问题如下: 权限如何加载 权限匹配规则 登录 1. 引入maven依赖 1 <?xml version="1.0" enc ...
- Kitty基于Spring Boot、Spring Cloud、Vue.js、Element实现前后端分离的权限管理系统
源码地址:https://gitee.com/liuge1988/kitty 软件架构 后端架构 开发环境 IDE : eclipse 4.x JDK : JDK1.8.x Maven : Maven ...
- 前后端分离djangorestframework——权限组件
权限permissions 权限验证必须要在认证之后验证 权限组件也不用多说,读了源码你就很清楚了,跟认证组件很类似 具体的源码就不展示,自己去读吧,都在这里: 局部权限 设置model表,其中的ty ...
- 前后端分离进行权限管理之后端API返回菜单及权限信息(三)
一.动态菜单API的生成 1.API #菜单信息 url(r'^menus$', views.MenuModelView.as_view({"get": "list&qu ...
- 从壹开始前后端分离[.NetCore] 37 ║JWT完美实现权限与接口的动态分配
缘起 本文已经有了对应的管理后台,地址:https://github.com/anjoy8/Blog.Admin 哈喽大家好呀!又过去一周啦,这些天小伙伴们有没有学习呀,已经有一周没有更新文章了,不过 ...
随机推荐
- Jmeter(八)乱码处理
发贴的内容和标题在进行参数化之后, 由于包含中文, 情理之中地出现了乱码(得意地笑, 坐等你跳坑中.)
- zabbix服务端安装
1.安装zabbix服务(1)先rpm安装lamp环境 yum install -y httpd mysql mysql-libs php php-mysql mysql-server php-bcm ...
- Linux常用命令touch/grep/mkdir/rm/cat/find/cp/mv/tar/gzip等
Unix-->Linux(Ubuntu,Redhat,suse,fedora) 1. cd - :回到上次执行的那个目录(相当于“回看”的功能) 2. touch :创建一个文件,可以是任意后缀 ...
- JForum论坛安装以及部署(转)
链接地址:https://www.cnblogs.com/Amos-Turing/p/7151009.html 下载JForum2.1.9 包手动放到tomcat的webapps下面, 这次打开网址: ...
- 【ABAP系列】SAP ABAP 动态指针
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 动态指针 ...
- AGC035 A - XOR Circle【分析】
题目传送门 题意简述: (就是连环的意思) 唔,这道题考场上写了个什么神仙做法,数据太水了居然过了: // #include<cstdio> #include<algorithm&g ...
- 【VS开发】visual studio 2015的NuGet Manager解决方案管理功能
NuGet的官方说明是:NuGet是一款Visual Studio的扩展,它可以简单的安装.升级开源库和工具. 官网地址:http://www.nuget.org/ 官网最醒目的位置就是下载链接,安装 ...
- Nginx配置反向代理与负载均衡
Nginx的upstream目前支持的分配算法: 1.round-robin 轮询1:1轮流处理请求(默认) 每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继 ...
- Java基础/Java异常
Java异常 1.异常的分类: ① 非运行时异常(Checked Exception) Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常 ② 运行 ...
- Vim命令合集(四)
Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...