جاوا و تکنولوژی های آن

java programming language

در این وبلاگ به بررسی نکات موجود در جاوا و تکنولوژی های آن می پردازیم

طبقه بندی موضوعی


Matrix Variable  یکی دیگر از انواع متغییر هایی که همراه با درخواست GET میتوان ارسال کرد Matrix Variable است و میتواند شامل تعداد زیادی پارامتر باشد 


Spring از ورژن 3.2 از Matrix Variable حمایت میکند ولی ابتدا باید آنرا در تنظیمات فعال کنیم :

@Configuration
public class WebConfig implements WebMvcConfigurer {
 
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        UrlPathHelper urlPathHelper = new UrlPathHelper();
        urlPathHelper.setRemoveSemicolonContent(false);
        configurer.setUrlPathHelper(urlPathHelper);
    }
}


ساختار و نحوه استفاده از Matrix Variable :


Matrix Variable میتواند هر کجای URL قرار گیرد و کلید مقدار ها با '=' مشخص و با ';' از هم جدا میشوند و اگر یک کلید دارای مقادیر مختلفی باشد با ',' مشخص میشود

http://localhost:8080/spring-mvc-java/employeeArea/workingArea=rh,informatics,admin
http://localhost:8080/spring-mvc-java/employeeArea/workingArea=rh;workingArea=informatics;workingArea=admin


دو کلاس Model زیر را در نظر بگیرید :

public class Employee {
 
    private long id;
    private String name;
    private String contactNumber;
 
    // standard setters and getters 
}
public class Company {
 
    private long id;
    private String name;
 
    // standard setters and getters
}

و Matrix Variable زیر را در در نظر بگیرید که میخواهیم در Controller آنرا استخراج کنیم :

http://localhost:8080/spring-mvc-java/employeesContacts/contactNumber=223334411
@RequestMapping(value = "/employeesContacts/{contactNumber}", 
  method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<List<Employee>> getEmployeeBycontactNumber(
  @MatrixVariable(required = true) String contactNumber) {
    List<Employee> employeesList = new ArrayList<Employee>();
    ...
    return new ResponseEntity<List<Employee>>(employeesList, HttpStatus.OK);
}

توسط  MatrixVariable@ مقدار متغییر را دریافت و بعد تمامی Employee هایی که contact number آنها 223334411 است را دریافت میکنیم 



MatrixVariable همراه با PathVaraible :


ساختار :

http://localhost:8080/spring-mvc-java/employees/John;beginContactNumber=22001

نحوه دریافت :

@RequestMapping(value = "/employees/{name}", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<List<Employee>> getEmployeeByNameAndBeginContactNumber(
  @PathVariable String name, @MatrixVariable String beginContactNumber) {
    List<Employee> employeesList = new ArrayList<Employee>();
    ...
    return new ResponseEntity<>(employeesList, HttpStatus.OK);
}



نحوه دریافت چند MatrixVariable در قالب Map بصورت کلید / مقدار :


http://localhost:8080/spring-mvc-java/employeeData/id=1;name=John;contactNumber=2200112334


@GetMapping("employeeData/{employee}")
@ResponseBody
public ResponseEntity<Map<String, String>> getEmployeeData(
  @MatrixVariable Map<String, String> matrixVars) {
    return new ResponseEntity<>(matrixVars, HttpStatus.OK);
}



دریافت MatrixVariable با جایگاه مختلف :

http://localhost:8080/spring-mvc-java/
  companyEmployee/id=2;name=Xpto/employeeData/id=1;name=John;
  contactNumber=2200112334


@RequestMapping(
 value = "/companyEmployee/{company}/employeeData/{employee}",
 method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<Map<String, String>> getEmployeeDataFromCompany(
  @MatrixVariable(pathVar = "employee") Map<String, String> matrixVars) {
  ...
}




MatrixVariable ها میتوانند ساختار منعطف تری هم داشته باشند مثلا میخواهیم از یک بخشی از URL مقدار یک متغییر را توسط نامش بدست آوریم :

http://localhost:8080/spring-mvc-java/
  companyData/id=2;name=Xpto/employeeData/id=1;name=John;
  contactNumber=2200112334

و Bind کردن آن روی یک String :

@MatrixVariable(value="name", pathVar="company") String name





نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی