ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringMVC中的RedirectAttribute类[表单验证]

2020-02-03 20:36:16  阅读:207  来源: 互联网

标签:username String SpringMVC 表单 参数 user RedirectAttribute password public


RedirectAttributes是Spring mvc 3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的。
可以用来制作表单验证:
<1>用户检查接口:

public interface UserService {

    User checkUser(String username, String password);
}

<2>用户JPA接口:用户与数据库建立连接并可以对数据库进行操作DML操作

//<User,Long> 操作对象和主键类型
@Component
public interface UserRepository extends JpaRepository<User,Long> {
     User findByUsernameAndPassword( String username, String password);
}

<3>用户服务的实现类(用于返回对数据库操作的结果):

@Service
public class UserServiceImpl implements UserService {

    @Autowired  //接口注入
    public UserRepository userRepository;

    //检查用户密码是否正确,findByUsernameAndPassword是规定这样写的
    @Override
    public User checkUser(String username, String password) {
        User user = userRepository.findByUsernameAndPassword(username, password);
        return user;
    }
}

一旦使用关于Spring的注解出现在类里,例如我在实现类中用到了@Autowired注解,被注解的这个类是从Spring容器中取出来的,那调用的实现类也需要被Spring容器管理,加上@Component
作者:转角遇到抢劫的_0c47
链接:https://www.jianshu.com/p/8d3f5cede6bf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

例如上述的UserRepository 属性注入。
扩展:

@controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层

@service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理

@repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件

@component (把普通pojo实例化到spring容器中,相当于配置文件中的(相当于配置文件中的<bean id="" class=""/>)
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

<4>后台控制器:

//    @RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
    @PostMapping("/login")  //Post提交参数后@RequestParam绑定到控制器上
    public String login(@RequestParam  String username,
                        @RequestParam  String password,
                        HttpSession session,
                        RedirectAttributes attributes){
        User user = userService.checkUser(username,password);  //检查用户名密码的正确性
        if(user != null){  //查询成功
            user.setPassword(null);   //密码为了安全起见不要返回到session中
            session.setAttribute("user",user);  //存入session
            return "admin/index";   //返回首页
        }else{
//            重定向之后在URL后面拼接参数并返回给前端界面
            attributes.addFlashAttribute("message","用户名和密码错误!");
            return "redirect:/admin";   //返回adminA
        }
    }

重定向到前端有两种带参的方式:RedirectAttributes redirectAttributes

1.redirectAttributes.addAttribute(“param”, value);

这种方法是在重定向之后在URL后面拼接参数value

2.redirectAttributes.addFlashAttribute(“param”, value);

这种方法可以在URL后面隐藏参数,原理是将参数放到Session中,在Session跳转到页面后就会马上被移除,所以刷新页面后值会丢失,进而保证了数据的安全性。

这个方法只能在重定向的页面上使用EL表达式取值,如果是重定向到Controller中是无法获取param中的value,需要在重定向的目标方法上添加对应的形参@RequestPrama(value = “prama”)String prama才能获取参数。
通过上下文的message取值:

<div class="ui negative mini message" th:text="${message}" th:unless="${#strings.isEmpty(message)}" >
  用户名和密码错误!
</div>

通过th:text="${message}"得到后台返回的数据,使用的Thymeleaf模板的if和unless进行逻辑判断然后渲染界面。

参考:https://www.cnblogs.com/RoddeHope/p/7439643.html

米兰的小铁匠z 发布了18 篇原创文章 · 获赞 5 · 访问量 1495 私信 关注

标签:username,String,SpringMVC,表单,参数,user,RedirectAttribute,password,public
来源: https://blog.csdn.net/JAYU_37/article/details/104160590

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有