Spring第一课,了解IDEA里面的文件,回顾Cookie和Session,获取Session,Cookie,Header的方式

目录

IDEA第一课(熟悉里面内容) 

建立连接 -@RequestMapping          路由映射

请求        

1.传递单个参数​编辑

2.多个参数​编辑

3.传递数组

4.传递一个集合,但是这里我们传递的时候发生了500的错误

简单介绍JSON

回顾Cookie和Session

Cookie和Session的区别

获取Cookie的两种方式

设置Session的方式

获取Session的问题

获取Http请求中的Header信息


IDEA第一课(熟悉里面内容) 

resources资源目录

static       /static 静态文件

templates  主要是配置相关的代码 /templates模版

application .properties    SpringBoot项目的配置文件-十分重要

test测试代码,注意这里是放的开发人员的测试代码,与测试人员无关

作为一名开发人员,需要对自己的代码质量负责,不能完全依赖测试QA

功能开发之后,需要先自测,自测通过才交给测试人员

注意⚠️文件夹的颜色也是有区别-蓝色与绿色的java。当然可以在下图去设置

在当前页面我们和前面学的Servlet不同,首先Spring自己带Tomcat。

其次和我们之前前往的路径也不同,原因就是看下面的日志,他写的ContentPath为""即空。

现在的Spring完全就不需要我们自己去下载Tomcat,给我们进行的一个封装,但是实际使用的还是http协议

Spring Boot是帮助我们快速构建项目的

Springmvc是其中Boot的一个模块,能用这个项目进行jAVAweb项目开发,就是一个Springmvc的一个项目,是基于Servlet进行改进的

MVC其实可以看成一种思想,通过Spring进行实现称为SpringMVC,但是当前阶段,MVC概念又发生了一些变化,后端人员不涉及前端页面的开发,所以也就没有view层,view现在又有了一层解释,之前返回的视图,现在更像是返回视图的数据。

学习SpringMVC

建立连接 -@RequestMapping          路由映射

访问地址,类的路径+方法路径(比如下面在类的前面添加了一个RequestMapping,那么类也会有路径了,/可以省略,但是推荐不要省略(标准-前加/后不加)

RequestMapping支持Post和Get都可以

@RequestMapping("/hello")
@RestController
public class HelloController {
//此时就限定必须使用Get这个方法
//注解没有写属性名字,默认就是value
    @RequestMapping(value = "/sayhi",method = RequestMethod.GET)
    public String sayHi(){
        return "hi,SpringBoot";
    }
}
请求        
1.传递单个参数

底层逻辑:从请求的参数中,获取参数名为name的值,并且给name赋值

2.多个参数

多个参数也是一样,顺序无所谓,注意⚠️哈我说的是age可以和那个name换

但是如果使用基本基本类型,必须要学会传值,不传值就会报错。所以开发的时候我们统一建议使用包装类

后端参数重命名-必定需要传的(如果使用了重命名-就必须要使用@RequestParam注解里的名字。假如你与注解的名字不同,则会报400的错误

如果我们像下图一样进行改动,那么虽然不会报错,但是会传不过来参数,即默认的空

  public  String m5(@RequestParam(value = "name",required = false) String username){
        return "接收到的参数:"+username;
    }

以上写的,就是在web交互,也就可以说是SpringMVC

注意哈url后面的问号查询字符串

3.传递数组

当我们请求中,同一个参数有多个的时候

4.传递一个集合,但是这里我们传递的时候发生了500的错误

5开头的通常是服务端发生错误

4开头的往往是客户端发生错误

如果看到5开头的错误,第一反应去看后端日志,后端日志从下往上看,一段一段的看,先看最后一段的首行

他的意思是,他的默认是传递一个数组,而不是一个集合,所以需要一个注释,来声明它是一个集合,这样,他就会可以用集合了

 @RequestMapping("/m6")
    public  String m7(@RequestParam List<String> listParam){
    return "接收到的参数ListParam:"+listParam+"长度"+listParam.size();
    }

简单介绍JSON

本质上是一个字符串,表示对象的字符串,通常称为JSON字符串

假如要传递注解,就要使用一个RequestBody

public  String m4(@RequestBody Person person){
        return "接收到的参数:"+person.toString();
    }

获取URL中的参数

可以获取一个,也可以获取多个获取多个就要自己去填写,但是说需要注意他们的顺序,而且选择了顺序之后,就需要往请求里面填写东西(不能少填写)

把文件传递到,当地的文件夹中,相当于我们平时下载的

 public String m10(@RequestPart MultipartFile file) throws IOException {
        System.out.println(file.getOriginalFilename());
        file.transferTo(new File("/Users/lcl/Desktop/py/" +file.getOriginalFilename()));
        return "success";
    }

回顾Cookie和Session

Http是无状态的->http没有记忆功能的,现在的请求和过一会的请求,同样的请求参数,得到的结果是一样的->处理逻辑是一样的,而不是指数据。

Cookie是客户端机制,Session是服务器端机制 ,他们会常常结合在一起使用。

Http是无状态的-http没有记忆功能,现在请求和过一会的请求,同样的请求参数,得到的结果是一样的->处理逻辑是一样

Cookie(相当于是一个学生证,能够查到你的信息)

理解Session(服务器机制,根据你的xx,有你的信息就能够查到你)

首先先要理解什么是会话​​​​​​​

在计算机领域,会话是一个客户与服务器之间不中断的请求响应,服务器能够识别出来请求来自同一个用户,当一个未知的用户向Web应用程序发送第一个请求时,就开始了一个会话,当用户明确结束会话或服务器有一个时限内,没有收到任何用户的任何请求的时候,会话就结束了。

Cookie和Session的区别

Cookie是客户端保存信息的一种机制,Session是服务器端保存用户信息的一种机制

Cookie和Session之间主要通过SessionId关联起来的,SessionId是Cookie和Session之间的桥梁

Cookie和Session经常会在一起配合使用,但不是必须配合

获取Cookie的两种方式
下面是两种方式拿到Cookie,第一种是拿到全部的Cookie. 
@RequestMapping("/getCookie")
    public String getCookie(HttpServletRequest request){
        Cookie[]cookies= request.getCookies();
//        for(Cookie cookie:cookies){
//            System.out.println(cookie.getName()+":"+cookie.getValue());
//        }
        if (cookies!=null) {
            Arrays.stream(cookies).forEach(cookie -> {
                System.out.println(cookie.getName() + ":" + cookie.getValue());
            });
        }
        return "获取cookie成功";
    }


    //使用注解的第二个方式,只能一个一个拿
    @RequestMapping("/getCookie2")
public String getCookie2(@CookieValue String bite,@CookieValue String aaa){
        return "cookie存取的值"+bite+",aaa"+aaa;
    }
设置Session的方式
 public String setSession(HttpServletRequest request){
        HttpSession session= request.getSession();
        session.setAttribute("username","zhangsan");
        return "success";
    }
获取Session的问题
//方法1:(原始版本,刚开始session为空。)
@RequestMapping("/getSession")
    public String getSession(HttpServletRequest request){
    HttpSession session= request.getSession(false);
    if(session!=null){
        String username=(String) session.getAttribute("username");
        return "登录用户"+username;
    }
    return "session为空";
}
方法2:
@RequestMapping("/getSession2")
//默认是一个必须传递的参数,所以加上false(这样你不传递参数也不会报错)
public  String getSession2(@SessionAttribute (required = false) String username){
        return "username:"+username;
}
方法3: Spring有一个内置的对象,和第一种方式相像,可以直接使用HttpSession等同于第一种的那个
request.Session(true)
@RequestMapping("/getSession3")
//内置对象,在需要的时候,加上即可,不需要的时候可以不写
public String getSesson3(HttpSession session){
        String username=(String) session.getAttribute("username");
        return "登入用户"+username;
}
获取Http请求中的Header信息
@RequestMapping("/getHeader")
public  String getHeader(HttpServletRequest request){
//User-Agent相当于是一个key
       String userAgent= request.getHeader("User-Agent");
       return "userAgent"+userAgent;
}
@RequestMapping("/getHeader2")
public String getHeader(@RequestHeader("User-Agent")String userAgent){
        return "userAgent"+userAgent;
}

  • 39
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
好的,以下是一个简单的Spring Boot cookiesession登陆界面的代码示例。 首先是UserController.java: ``` @Controller public class UserController { @Autowired private UserService userService; @GetMapping("/") public String index(Model model) { return "index"; } @PostMapping("/login") public String login(@RequestParam String username, @RequestParam String password, HttpServletResponse response, HttpServletRequest request) { User user = userService.getUser(username, password); if(user != null) { HttpSession session = request.getSession(true); session.setAttribute("user", user.getUsername()); Cookie cookie = new Cookie("user", user.getUsername()); cookie.setMaxAge(60*60*24); response.addCookie(cookie); return "redirect:/dashboard"; } else { return "index"; } } @GetMapping("/dashboard") public String dashboard(Model model, HttpServletRequest request) { HttpSession session = request.getSession(false); if(session == null) { return "index"; } else { String username = (String) session.getAttribute("user"); if(username == null) { return "index"; } else { model.addAttribute("username", username); return "dashboard"; } } } @GetMapping("/logout") public String logout(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(false); if(session != null) { session.removeAttribute("user"); session.invalidate(); } Cookie cookie = new Cookie("user", null); cookie.setMaxAge(0); response.addCookie(cookie); return "index"; } } ``` 这个类处理了登陆、认证和登出逻辑,使用了HttpSessionCookie来存储用户状态。具体而言,当用户登陆时,UserController会调用UserService来验证用户名和密码,如果验证通过,UserController会创建一个新的HttpSession并将用户信息存储在其中,同时会创建一个新的Cookie来存储用户信息,并将Cookie添加到HttpServletResponse中。当用户访问dashboard页面时,UserController会先检查是否存在有效的HttpSession,如果存在,则从中获取用户信息并将其传递给Model。当用户登出时,UserController会将HttpSessionCookie失效,并将用户重定向到登陆页面。 接下来是UserService.java: ``` @Service public class UserService { private static final List<User> users = Arrays.asList( new User("admin", "admin"), new User("user", "password"), new User("test", "test") ); public User getUser(String username, String password) { for(User user : users) { if(user.getUsername().equals(username) && user.getPassword().equals(password)) { return user; } } return null; } } ``` 这个类模拟了一个简单的用户管理系统,只有三个用户(admin,user和test),每个用户都有一个用户名和密码。UserService类提供了一个getUser方法,用于验证用户名和密码是否正确。实际情况下,这个方法会调用数据库或者其它身份认证服务来获取正确的用户信息。 最后是View层: index.html ``` <!DOCTYPE html> <html> <head> <title>Spring Boot Cookie and Session Login Example</title> </head> <body> <h1>Spring Boot Cookie and Session Login Example</h1> <form method="post" action="/login"> <label>Username:</label> <input type="text" name="username"></input> <br/> <label>Password:</label> <input type="password" name="password"></input> <br/> <input type="submit" value="Login"></input> </form> </body> </html> ``` dashboard.html: ``` <!DOCTYPE html> <html> <head> <title>Dashboard - Spring Boot Cookie and Session Login Example</title> </head> <body> <h1>Welcome, ${username}!</h1> <a href="/logout">Logout</a> </body> </html> ``` 这个例子中的View层非常简单,只包含了一个登陆表单和一个dashboard页面。当用户成功登陆后,会重定向到dashboard页面并显示用户信息。当用户登出时,会返回到登陆页面。 注意:以上代码是一个简单的示例,实际使用时还需要加入错误处理、安全认证等功能来提高系统的鲁棒性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗哥不是甜妹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值