一、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. Python2.x与Python3.x的主要区别(转)

    python2.x和python3.x版本有很大的差异,除了依赖包的名称变化很大外,其主要差异总结如下: 1)print函数 Python3中,print函数的括号是必须的,Python2是可选的. ...

  2. ERROR: Command "python setup.py egg_info" python-nss

    [root@localhost ~]# pip install python-nss DEPRECATION: Python 2.7 will reach the end of its life on ...

  3. nohup及pip命令总结

    最近在搭建Python的Web开发环境的时候,用到nohup和pip等一些工具,先简单总结一下,以备后续查用. 1.nohup nohup(no hang up)就是不挂断的意思,如果你正在运行一个进 ...

  4. C# WinForm 控制台日志输出

    public class MyConsole : IDisposable { private const uint STD_INPUT_HANDLE = 0xfffffff6; private con ...

  5. UEditor富文本编辑器时,插入图片没有任何反应

    1.信息: Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.contex ...

  6. PC端网页嵌入百度地图

    1 打开百度地图生成器: http://api.map.baidu.com/lbsapi/creatmap/ 2 设置好了之后,点击获取代码,将代码粘贴到文件中保存为html文件 参考网址:https ...

  7. 根据输入的整数n使得输出精确到小数n位

    #include<iostream> #include<stdio.h> using namespace std; int main(){ int a,b,c; while(t ...

  8. 【PyTorch】PyTorch中的梯度累加

    PyTorch中的梯度累加 使用PyTorch实现梯度累加变相扩大batch PyTorch中在反向传播前为什么要手动将梯度清零? - Pascal的回答 - 知乎 https://www.zhihu ...

  9. 【VS开发】循序渐进学习使用WINPCAP(一)

    winpcap教程 中文教程 http://www.ferrisxu.com/WinPcap/html/index.html 除此之外, WinPcap · Developer Resources下载 ...

  10. 使用UI Automation实现自动化测试--1-4

    Introduction UI Automation是Microsoft .NET 3.0框架下提供的一种用于自动化测试的技术,是在MSAA基础上建立的,MSAA就是Microsoft Active ...