欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实习日志--6、SSM框架实现批量删除和权限管理功能

程序员文章站 2024-03-04 14:01:35
...

实习日志--6、SSM框架实现批量删除和权限管理功能

ajax技术简介

首先,AJAX是一个缩写,AJAX=Asynchronous JavaScript And XML(异步 JavaScript 及 XML),其次AJAX 并不是一种新的编程语言,而仅仅是一种新的技术,它可以创建更好、更快且交互性更强的 web 应用程序。

AJAX 使用 JavaScript 在 web 浏览器与 web 服务器之间来发送和接收数据。通过在幕后与 web 服务器交换数据,而不是每当用户作出改变时重载整个 web 页面,AJAX 技术可以使网页更迅速地响应。

在这里,简单说一下,传统的 web 应用程序会把数据提交到 web 服务器(使用 HTML 表单),在 web 服务器把数据处理完毕之后,会向用户返回一张完整的新网页。由于每当用户提交输入,服务器就会返回新网页,传统的 web 应用程序往往运行缓慢,且越来越不友好。

优点:
通过 AJAX,web 应用程序无需重载网页,就可以发送并取回数据。完成这项工作,需要通过向服务器发送 HTTP 请求(在幕后),并通过当服务器返回数据时使用 JavaScript 仅仅修改网页的某部分。

批量删除

引入JQuery

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>

删除按钮:

<button type="button" class="btn btn-default" title="批量删除" onclick="deleteAll()">
				<i class="fa fa-refresh"></i> 批量删除
</button>

controller层:

 @RequestMapping("/batchDelete.do")
    public String batchDelete(String userList){
        String[] strs = userList.split(",");
        
//      string类型强制转换成int类型数组
        List<Integer> ids=new ArrayList<>();
        for(int i=0;i< strs.length;i++){
            ids.add(Integer.parseInt(strs[i]));
        }
        userInfoService.batchDelete(ids);
        return "redirect:findAll.do";

    }

编写script代码:

function deleteAll() {
		var checkedNum= $("input[name='ids']:checked").length;
		if(checkedNum==0){
		    alert("至少选中一项删除!");
			return;
		}

		if(confirm("确定删除选中的用户?")){
		    var userList = new Array();
		    $("input[name='ids']:checked").each(function(){
				userList.push($(this).val());
            });
		}

		$.ajax({
			type:"post",
			url:"${pageContext.request.contextPath}/user/batchDelete.do",
			data:{userList:userList.toString()},
			success:function () {
				alert("删除成功!");
				location.reload();
            },
            error:function () {
				alert("删除失败!");
            }
		});
    }

大致效果图类似:
实习日志--6、SSM框架实现批量删除和权限管理功能

拦截器和过滤器

  1. 过滤器
    依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等
  2. 拦截器
    依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理

区别

①拦截器是基于java的反射机制的,而过滤器是基于函数回调。
②拦截器不依赖与servlet容器,过滤器依赖于servlet容器。
③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。拦截器可以获取ioc中的service bean实现业务逻辑

使用

spring-mvc.xml 配置

<mvc:interceptors>  
	    <!-- 拦截器 -->
	    <mvc:interceptor>
	        <mvc:mapping path="/**" />
	        <mvc:exclude-mapping path="/res/**"/>
	        <mvc:exclude-mapping path="/login/**"/>
	        <mvc:exclude-mapping path="/404.html"/>
	        <bean class="com.cms.intercept.SecurityInterceptor"></bean>
	    </mvc:interceptor>
	</mvc:interceptors>

service层实现方法:

@Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //1.查询当前登录的用户信息
        UserInfo userInfo=userDao.doLogin1(username);
        //2.查询当前的用户有多少角色
        List<Role> roleList=roleDao.findRoleByUserId(userInfo.getId());
        //3.把角色放入用户中
        userInfo.setRoleList(roleList);
   
        User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getAuthority(userInfo.getRoleList()));

        return user;
    }
    private Collection<? extends GrantedAuthority> getAuthority(List<Role> roleList) {
        List<SimpleGrantedAuthority> list=new ArrayList<>();
        for(Role role:roleList){
            list.add(new SimpleGrantedAuthority("ROLE_"+role.getRolename()));
        }
        return list;
    }

效果:
抵御一切非法输入,除了登录匹配外无法进入系统。

实习日志--6、SSM框架实现批量删除和权限管理功能
正常进入admin:具备用户和角色两个管理;
实习日志--6、SSM框架实现批量删除和权限管理功能
正常进入user:仅一个角色管理;
实习日志--6、SSM框架实现批量删除和权限管理功能

相关标签: SSM ajax