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 哈喽大家好呀!又过去一周啦,这些天小伙伴们有没有学习呀,已经有一周没有更新文章了,不过 ...
随机推荐
- Retrofitting Analysis
Retrofitting Analysis To figure out the process of retrofitting[1] objective updating, we do the fol ...
- leetcode 215 第K个最大的元素
此问题可转化为Top K问题进行考虑,当用小顶堆选出K个最大值时,堆顶的元素即为第k大的元素 class Solution { public: int findKthLargest(vector< ...
- web开发(七) JSTL标签库
在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6432786.html>,在此仅供学习参考之用. 一.为什 ...
- 阶段3 2.Spring_10.Spring中事务控制_9 spring编程式事务控制1-了解
编程式的事物控制,使用的情况非常少,主要作为了解 新建项目 首先导入包坐标 复制代码 这里默认值配置了Service.dao和连接池其他的内容都没有配置 也就说现在是没有事物支持的.运行测试文件 有错 ...
- [LeetCode] 373. Find K Pairs with Smallest Sums 找和最小的K对数字
You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. Define ...
- C#代码获取另一程序的错误提示,并关闭窗口。
A程序报错弹框如下: B程序捕捉到此错误消息,并关闭.B程序核心代码如下. private void timer_Click(object sender, EventArgs e) { //查找Mes ...
- cocos2dx[3.2](5) 屏幕适配
1.两个分辨率 1.1.窗口分辨率 在AppDelegate.cpp中有个设置窗口分辨率的函数.该函数是设置了我们预想设备的屏幕大小,也就是应用程序窗口的大小. // glView->setFr ...
- python 并发编程 多线程 信号量
一 信号量 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行 如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群 ...
- PTA(Basic Level)1008.数组元素循环右移问题
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最 ...
- Python 对于分表的操作
在操作数据库的业务里,我们系统采用了orm框架 ,避免了过多的写sql,利用实体对数据库进行操作 需求: 账户系统里的account表是进行了分表,分表规则为accountid进行20取模,测试环境分 ...