栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RESTFul案例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RESTFul案例

文章目录
        • 1. 搭建基础项目
        • 2. 实现查询功能
        • 3. 实现删除功能
        • 4. 实现更新功能
        • 5. 实现新增功能
        • 6. 添加静态资源

1. 搭建基础项目

1.1 新建maven项目demo
1.2 修改pom.xml



    4.0.0

    com.example
    demo
    1.0-SNAPSHOT
    war

    
        8
        8
    

    
        
            org.springframework
            spring-webmvc
            5.3.12
        
        
            ch.qos.logback
            logback-classic
            1.3.0-alpha10
        
        
            javax.servlet
            javax.servlet-api
            4.0.1
            provided
        
        
            org.thymeleaf
            thymeleaf-spring5
            3.0.12.RELEASE
        
        
            org.projectlombok
            lombok
            1.18.22
            provided
        
    

1.3. 新增web模块,修改web.xml



    
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    
    
        CharacterEncodingFilter
        /*
    
    
    
        HiddenHttpMethodFilter
        org.springframework.web.filter.HiddenHttpMethodFilter
    
    
        HiddenHttpMethodFilter
        /*
    
    
    
        DispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:springMVC.xml
        
        1
    
    
        DispatcherServlet
        /
    

1.4. 新增SpringMVC配置文件springMVC.xml



    
    
        
        
        
            
                
                    
                        
                        
                        
                        
                        
                        
                    
                
            
        
    

    
    


1.5. 创建控制器EmployeeController

package com.example.mvc.controller;

import org.springframework.stereotype.Controller;

@Controller
public class EmployeeController {
}

1.6. 创建视图
在WEB-INF下创建目录templates,在templates目录下创建视图文件index.html。




    
    首页


首页

1.7. 在本地tomcat上部署、运行应用

1.8. 添加实体类Employee

package com.example.mvc.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee {
    private Integer id;
    private String fullname;
    private String email;
    private Integer gender;
}

1.9 添加dao层

package com.example.mvc.dao;

import com.example.mvc.bean.Employee;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

@Repository
public class EmployeeDao {
    private static Map employees = null;

    static {
        employees = new HashMap();
        employees.put(1001,new Employee(1001,"Steve Jobs","jobs@apple.com",1));
        employees.put(1002,new Employee(1002,"Mark Elliot Zuckerberg","zuckerberg@facebook.com",1));
        employees.put(1003,new Employee(1003,"Elon Musk","musk@spacex.com",1));
        employees.put(1004,new Employee(1004,"Jeff Bezos","bezos@amazon.com",1));
    }

    private static Integer initId = 1005;

    public void save(Employee employee){
        if(employee.getId() == null){
            employee.setId(initId++);
        }
        employees.put(employee.getId(),employee);
    }
    public Collection getAll(){
        return employees.values();
    }
    public Employee get(Integer id){
        return employees.get(id);
    }
    public void delete(Integer id){
        employees.remove(id);
    }
}

注意两点:

  • @Repository标注EmployeeDao
  • 修改SpringMVC配置文件springMVC.xml,需要扫描com.example.mvc.dao,以将EmployeeDao注入容器

2. 实现查询功能
功能请求路径请求方法
查询所有员工信息/employeeGET

2.1. 修改视图文件index.html。




    
    首页


首页

查询所有员工信息

2.2. 修改控制器EmployeeController。

package com.example.mvc.controller;

import com.example.mvc.bean.Employee;
import com.example.mvc.dao.EmployeeDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.Collection;

@Controller
public class EmployeeController {
    @Autowired
    private EmployeeDao employeeDao;

    @RequestMapping(value = "/employee", method = RequestMethod.GET)
    public String getAll(Model model) {
        Collection employees = employeeDao.getAll();
        model.addAttribute("employees",employees);
        return "employee_list";
    }
}

2.3. 添加视图文件employee_list.html。




    
    列表


  
id fullname email gender

2.4. 运行应用 ,查看效果。

3. 实现删除功能
功能请求路径请求方法
删除员工信息/employee/1001DELETE

3.1. 修改视图文件employee_list.html。




    
    列表


  
id fullname email gender options
delete

3.2. 修改控制器EmployeeController,添加如下控制器方法。

@RequestMapping(value = "/employee/{id}",method = RequestMethod.DELETE)
public String deleteEmployee(@PathVariable("id") Integer id){
    employeeDao.delete(id);
    return "redirect:/employee";
}

3.3. 启动应用,查看效果。

4. 实现更新功能
功能请求路径请求方法
根据id查询员工信息/employee/1001GET
更新员工信息/employeePUT

4.1. 修改视图文件employee_list.html。

 
   delete
   update
 

4.2. 新增视图文件employee_update.html。




    
    更新


  
fullname:
email:
gender:male female

4.3. 修改控制器EmployeeController,添加如下控制器方法。

@RequestMapping(value = "/employee/{id}",method = RequestMethod.GET)
public String getEmployeeById(@PathVariable("id") Integer id,Model model){
    Employee employee = employeeDao.get(id);
    model.addAttribute("employee",employee);
    return "employee_update";
}
@RequestMapping(value = "/employee",method = RequestMethod.PUT)
public String updateEmployee(Employee employee){
    employeeDao.save(employee);
    return "redirect:/employee";
}

4.4. 启动应用,查看效果。

5. 实现新增功能
功能请求路径请求方法
新增员工信息/employeePOST

5.1. 修改视图文件employee_list.html。

add

5.2. 修改SpringMVC配置文件springMVC.xml,添加如下视图控制器,


5.3. 新增视图文件employee_add.html。




    
    新增


  
fullname:
email:
gender:male female

5.4. 修改控制器EmployeeController,添加如下控制器方法。

@RequestMapping(value = "/employee",method = RequestMethod.POST)
public String addEmployee(Employee employee){
    employeeDao.save(employee);
    return "redirect:/employee";
}

5.5. 启动应用,查看效果。

6. 添加静态资源

6.1. 在webapp目录下新建子目录static,在static下新建index.css,内容如下。

body>a:first-of-type{
    display: inline-block;
    margin: 10px 0;
    padding: 5px 15px;
    background: darkgoldenrod;
    color: #fff;
    text-decoration: none;
}

6.2. 修改视图文件employee_list.html,引入样式文件index.css。


    
    列表
    

6.3. 修改SpringMVC配置文件springMVC.xml,添加default-servlet-handler,用来开放对静态资源的调用。


说到这儿,得提下tomcat自带的web.xml,其中有如下一段配置,





    default
    org.apache.catalina.servlets.DefaultServlet
    
        debug
        0
    
    
        listings
        false
    
    1






    jsp
    org.apache.jasper.servlet.JspServlet
    
        fork
        false
    
    
        xpoweredBy
        false
    
    3




    default
    /




    jsp
    *.jsp
    *.jspx

这段配置里有两个Servlet:DefaultServlet和JspServlet。
再加上我们自己在demo项目的web.xml里配置的DispatcherServlet,当前至少有3个servlet了。

  • DispatcherServlet
    *.jspx,用来接收、处理除jsp以外的所有请求。
  • JspServlet
    *.jsp
    *.jspx
    用来接收、处理jsp请求。
  • DefaultServlet
    /,用来接收所有请求。
    也就是说,JspServlet、DispatcherServlet无法处理的请求,最后都会交给DefaultServlet处理,如果DefaultServlet也无法处理则报错。

对静态资源的访问,就是JspServlet和Dispatcher都无法处理的请求,所以最终其实是由DefaultServlet来处理的。
,开启注解驱动,其实就是让DispatcherServlet处理所有请求。
,开启静态资源访问,其实就是让DefaultServlet来处理静态资源访问这类请求。
6.4. 启动应用,查看效果。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590769.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号