Spring——Javaweb进阶学习(三)

一、Spring和SpringBoot

Spring发展到如今形成了一种开发生态圈,Spring提供若干个子项目,每个项目用于完成特定的功能。

因为spring配置繁琐

springboot可以简化配置,快速构建应用程序,简化开发,提高效率

二、SpringBoot快速入门

1.创建Spring工程

旋转spring项目,java语言,maven类型

选择web的第一项的spring web

2.查看工程

可以看到里面有Springtestapplication这个类,代表启动springboot工程

这是配置文件

3.创建请求处理类

可以创建一个controller文件夹里面放请求接口的类

创建一个方法

package com.rosen.controller;

public class HelloController {
    public String hello()
    {
        System.out.println("hello world");
        return "hello";
    }
}

但是还不是一个请求处理类,在方法上面加入@RestController ,还要定义接口路径

package com.rosen.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello()
    {
        System.out.println("hello world");
        return "hello";
    }
}
运行后可以看到,端口号为8080

在浏览器输入 localhost:8080/hello 就可以进行页面展示了。而看到其实spring项目其实内置tomcat的

三、SpringBoot获取请求参数

注意如果想要调用post接口测试的化,可以利用postman进行接口请求了

1.简单参数

(1)原始方式

就像原来的maven的web项目的时候,通过request获取通过键来获取数据

@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    public String simpleParam(HttpServletRequest request){
        String name=request.getParameter("name");
        String sage=request.getParameter("age");
        int age=Integer.parseInt(sage);
        System.out.println(age+":"+name);
        return "OK";
    }
}

(2)springBoot方式

创建变量和键的名字相同,直接获取,会自动进行数据类型转换,如果没有则没有数据

@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    //spring会自动类型转换
    public String simpleParam(String name,Integer age){
        System.out.println(age+":"+name);
        return "OK";
    }
}

当然这个还可以进行映射,比如你获取键为name的用户,想用username接收怎么办

当然也可以设置是否必须要有这个参数,required设置为true必须要有

@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    //spring会自动类型转换
    public String simpleParam(@RequestParam(name="name",required = false)String username, Integer age){

        System.out.println(age+":"+username);
        return "OK";
    }
}

2.实体参数

接收参数很多的化,我不能写一个又一个的参数接收吧,我可以写一个类,进行接收

我创建一个pojo代表可以使用的类

package com.example.quicek.pojo;

public class User {
    private String name;
    private Integer age;

    private Adress adress;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Adress getAdress() {
        return adress;
    }

    public void setAdress(Adress adress) {
        this.adress = adress;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", adress=" + adress +
                '}';
    }
}

 在只要属性名和传来的键名称相同即可接收,如过类里面包含类,则键:adress.属性名就好了

package com.example.quicek.Controller;

import com.example.quicek.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController{
    @RequestMapping("/simplePojo")
    //spring会自动类型转换
    public String simpleParam(User user){

        System.out.println(user);
        return "OK";
    }
}

3.数组集合参数

(1)数组方式

表单的复选框组件会传来一个数组的数据,多个值怎么获取呢?

那么就可以用集合进行获取

@RequestMapping("/getmore")
    public String getmore(String []hobby)
    {
        System.out.println(Arrays.toString(hobby));
        return "OK";
    }
}

(2)集合方式

需要在前面加上@RequestParam

@RequestMapping("/getmore")
    public String getmore(@RequestParam List<String> hobby)
    {
        System.out.println(hobby);
        return "OK";
    }
}

4.日期参数

需要@DateTimeFormat(pattern="")代表前端需要传递过来的格式

而且创建的实例update也对应这前端的键

@RequestMapping("/getdate")
public String getdate(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDate update)
{

    System.out.println(update);
    return "OK";
}

5.Json参数

postman先设置json格式

为了接收我们可以用类来接收

User类

Adress类

要注意类的属性必须和传来的数据一致

则控制器里面必须是@RequestBody才可以获取body的数据

@RequestMapping("/getParam")
    public String getParam(@RequestBody User user)
{
    System.out.println(user);
    return "OK";
}

6.路径参数

通过url直接传递参数,使用{...}来标识该路径参数,需要使用@PathVariable获取路径参数

需要把/path/后面设为变量,然后把@PathVariable 之后的参数对应上面的变量参数

@RequestMapping("/path/{id}")
    public String pathParam(@PathVariable Integer id)
{
    System.out.println(id);
    return "OK";
}

当然也可以多层

@RequestMapping("/path/{id}/{name}")
    public String pathParam(@PathVariable Integer id,@PathVariable String name)
{
    System.out.println(id+name);
    return "OK";
}

四、SpringBoot设置响应数据

 每次return作为一个参数返回,其实都依靠一个注解@ResponseBody

而我们RestController其实已经包含这个注解了

1.直接返回

@RequestMapping("/hello")
    public String hello()
{
    return "hello";
}

2.对象返回

@RequestMapping("/getAddr")
    public Adress getAddr()
{
    Adress addr=new Adress();
    addr.setCity("河南");
    addr.setProvince("郑州");
    return addr;
}

3.集合返回

@RequestMapping("/getList")
public List<Adress> getList()
{
 List<Adress> list=new ArrayList<>();
 Adress addr=new Adress();
    addr.setCity("河南");
    addr.setProvince("郑州");
 Adress addr1=new Adress();
    addr1.setCity("北京");
    addr1.setProvince("北京");
 list.add(addr);
 list.add(addr1);
 return list;

}

统一格式

大家会发现格式都是不同的,那可以用一个类统一格式

成员变量

还有三个方法

可以只返回不同形式

举例:

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Servlet 是 JavaEE 规范中的一部分,是处理 Web 请求的组件。Servlet 运行在服务器端,能够接收客户端发来的请求,并给客户端响应结果。下面我们来看看 Servlet 的基本概念和使用方法。 ## 一、Servlet 的基本概念 ### 1.1 Servlet 的生命周期 Servlet 的生命周期包含以下个阶段: - 初始化阶段(init):当 Servlet 实例化后,Web 容器会调用其 init() 方法进行初始化操作。在此阶段,Servlet 可以执行一些初始化操作,例如读取配置信息、建立数据库连接等。 - 请求处理阶段(service):当客户端发来请求时,Web 容器会创建一个线程调用 Servlet 的 service() 方法处理请求。在此阶段,Servlet 可以获取请求参数、处理请求并生成响应数据。 - 销毁阶段(destroy):当 Web 应用停止或 Servlet 被卸载时,Web 容器会调用 Servlet 的 destroy() 方法进行清理工作。在此阶段,Servlet 可以释放资源、关闭数据库连接等。 ### 1.2 Servlet 的配置 在使用 Servlet 时,需要在 web.xml 文件中进行配置。以下是一个 Servlet 的基本配置: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping> ``` 其中,servlet-name 表示 Servlet 的名称,servlet-class 表示 Servlet 的名,url-pattern 表示请求的 URL 匹配规则。 ## 二、Servlet 的使用方法 ### 2.1 编写 Servlet 编写 Servlet 有两种方法:一种是继承 HttpServlet ,另一种是实现 Servlet 接口。这里以继承 HttpServlet 为例: ```java public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理 GET 请求 PrintWriter out = resp.getWriter(); out.println("Hello, world!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理 POST 请求 PrintWriter out = resp.getWriter(); out.println("Hello, world!"); } } ``` 在 Servlet 中,doGet() 方法用于处理 GET 请求,doPost() 方法用于处理 POST 请求。通过调用 HttpServletResponse 对象的 getWriter() 方法可以向客户端返回响应数据。 ### 2.2 部署 Servlet 将编写好的 Servlet 部署到 Web 容器中,有两种方法:一种是将 Servlet 打成 war 包放到 Web 容器的 webapps 目录下,另一种是通过 Eclipse 等开发工具将 Servlet 部署到 Web 容器中。部署完成后,可以通过访问 Servlet 的 URL 来测试 Servlet 是否正常工作。 ## 、总结 本文介绍了 Servlet 的基本概念和使用方法。Servlet 是 Java Web 开发中非常重要的组件,掌握 Servlet 的使用方法对于 Java Web 开发人员来说是必不可少的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

rosen6664

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

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

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

打赏作者

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

抵扣说明:

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

余额充值