2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
सामग्रीसूची
अनुरोधः - अनुरोधदत्तांशं प्राप्नुवन्तु
प्रतिक्रिया : प्रतिक्रियादत्तांशं सेट् कुर्वन्तु
BS architecture Browser/Server, browser/server architecture mode, क्लायन्ट् इत्यस्य केवलं ब्राउजर् इत्यस्य आवश्यकता वर्तते, तथा च अनुप्रयोगस्य तर्कः, आँकडा च सर्वरे संगृहीताः भवन्ति (परिपालने सुलभः, औसतः अनुभवः)
CS architecture क्लायन्ट/सर्वर, क्लायन्ट/सर्वर आर्किटेक्चर मोड (विकासः, परिपालनं च कष्टप्रदं भवति, परन्तु अनुभवः उत्तमः अस्ति)
HttpServletRequest इत्यस्य माध्यमेन मैन्युअल् रूपेण प्राप्तव्यम्
- import jakarta.servlet.http.HttpServletRequest;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
-
- @RestController
- public class RequestController {
- @RequestMapping("/SimpleParam")
- public String SimpleParam(HttpServletRequest request){ //返回的字符串类型是String
- String name=request.getParameter("name");
- String age=request.getParameter("age"); //通过这个方法得到字符串类型的
- int age1=Integer.parseInt(age); //将年龄进行类型转换
- System.out.println(name+":"+age1); //设置返回格式
- return "OK";
- }
- }
सरलाः मापदण्डाः : १.पैरामीटर्-नाम औपचारिक-पैरामीटर्-चर-नामस्य समानम् अस्ति, औपचारिकमापदण्डान् परिभाषयितुं मापदण्डान् प्राप्तुं अर्थः
- @RestController
- public class RequestController {
- @RequestMapping("/SimpleParam")
- public String SimpleParam(String name,Integer age){
- System.out.println(name+":"+age);
- return "OK";
- }
- }
अत्र डाकपालस्य URL सर्वाणि सन्ति इति ध्यानं कुर्वन्तुhttp://localhost:8080/SimpleParam?नाम=टोम&युग=10
उपर्युक्तौ द्वौ अपि get अनुरोधौ स्तः यदा एतत् पोस्ट् अनुरोधः भवति तदा भवद्भिः केवलं postman इत्यत्र URL प्रविष्टव्यम् ।http://localhost:8080/सरलपराम
यदि पोस्ट् मध्ये चीनीवर्णाः सन्ति तर्हि पृष्ठभूमितः विकृतवर्णाः दृश्यन्ते, अतः विन्यासे फ़िल्टरं सेट् कुर्वन्तु ।
जालपात्रे एकं फ़िल्टरं योजयित्वा वर्णसमूहं निर्दिशन्तु Spring-web संकुलमध्ये समर्पितं वर्णछिद्रं प्रदत्तम् अस्ति
- public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
- protected Class<?>[] getRootConfigClasses() {
- return new Class[0];
- }
-
- protected Class<?>[] getServletConfigClasses() {
- return new Class[]{SpringMvcConfig.class};
- }
-
- protected String[] getServletMappings() {
- return new String[]{"/"};
- }
- //乱码处理
- @Override
- protected Filter[] getServletFilters() {
- CharacterEncodingFilter filter = new CharacterEncodingFilter();
- filter.setEncoding("UTF-8");
- return new Filter[]{filter};//如果有多个过滤器,在这里用,隔开
- }
- }
ध्यानं कुर्वन्तु यत् एषा प्रक्रिया पोस्ट् कृते अस्ति यदि get इति चीनीयभाषायां पारितं भवति तर्हि अपि विकृतवर्णाः दृश्यन्ते ।
यदि विधि-पैरामीटर्-नाम अनुरोध-पैरामीटर्-नामेन सह न मेलति तर्हि भवान् मैपिंगं पूर्णं कर्तुं @RequestParam इत्यस्य उपयोगं कर्तुं शक्नोति ।
- @RestController
- public class RequestController {
- @RequestMapping("/SimpleParam")
- public String SimpleParam(@RequestParam(name="name") String username, Integer age){ //引号中写的是请求参数名
- System.out.println(username+":"+age);
- return "OK";
- }
- }
@PequestParam इत्यस्मिन् आवश्यकं विशेषता पूर्वनिर्धारितरूपेण सत्यं भवति, यस्य अर्थः अस्ति यत् अनुरोधः पैरामीटर् पारितः न भवति तर्हि त्रुटिः प्रतिवेदिता भविष्यति यदि पैरामीटर् वैकल्पिकः अस्ति (अर्थात् पारितः भवितुम् अर्हति वा न वा), required attribute can be set to false ( एवं प्रकारेण, यदि भवान् पारयति वा न वा तर्हि कोऽपि दोषः न निवेदितः भविष्यति)
अनुरोधपैरामीटर् नाम औपचारिकपैरामीटर् विशेषतानामस्य समानं भवति, केवलं तत् प्राप्तुं Pojo परिभाषयन्तु ।
- @RestController
- public class SimplePojo {
- @RequestMapping("/SimpleParam1")
- public String SimplePojo(user user) {
- System.out.println(user);
- return "yes";
- }
- }
- public class user {
- private String name;
- private Integer age;
- //加getter和setter方法toString
- }
अत्र url अस्तिhttp://localhost:8080/SimpleParam1?नाम=बिल्ली&वयस=29
अनुरोधपैरामीटर् नाम औपचारिकपैरामीटर् एट्रिब्यूट् नाम समानम् अस्ति ।, भवान् वस्तुपदानुक्रमसम्बन्धानुसारं नेस्टेड् pojo विशेषतामापदण्डान् प्राप्तुं शक्नोति ।
- public class user {
- private String name;
- private Integer age;
- private Address address;
- //加getter和setter和toString
- }
- public class Address {
- private String province;
- private String city;
- //加getter和setter还有toString
- }
- @RestController
- public class SimplePojo {
- @RequestMapping("/ComplexParam1")
- public String ComplexParam(user user) {
- System.out.println(user);
- return "yes";
- }
- }
अनुरोधपैरामीटर् नाम औपचारिकपैरामीटर् समूहनामस्य समानं भवति तथा च बहुविधाः अनुरोधाः सन्ति ।, पैरामीटर्स् प्राप्तुं सरणीप्रकारस्य औपचारिकमापदण्डं परिभाषयन्तु
- @RestController
- public class SimplePojo {
- @RequestMapping("/arrayParam")
- public String ArrayParam(String[] hobby) {//在这里建立一个数组,然后后面的名称和传入参数相同
- System.out.println(Arrays.toString(hobby));
- return "yes";
- }
- }
अनुरोधपैरामीटर् नाम औपचारिकपैरामीटर् संग्रहनामस्य समानं भवति तथा च अनेकाः अनुरोधमापदण्डाः सन्ति ।,@ अनुरोधपरम्बाध्यकारी पैरामीटर सम्बन्ध
- @RestController
- public class SimplePojo {
- @RequestMapping("/listParam")
- public String ArrayParam(@RequestParam List<String> hobby) {
- System.out.println(hobby);
- return "yes";
- }
- }
तिथिपैरामीटर् प्रारूपरूपान्तरणं पूर्णं कर्तुं @DateTimeFormat एनोटेशनस्य उपयोगं कुर्वन्तु
- @RestController
- public class SimplePojo {
- @RequestMapping("/dateParam")
- public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime updateTime) {
- System.out.println(updateTime);
- return "yes";
- }
- }
- //日期参数
- //使用@DateTimeFormat注解设置日期类型数据格式,默认格式yyyy/MM/dd @RequestMapping("/dataParam")
- @ResponseBody
- public String dataParam(Date date,@DateTimeFormat(pattern="yyyy-MM-dd") Date date1, @DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2){
- System.out.println("参数传递 date ==> "+date);
- System.out.println("参数传递 date1(yyyy-MM-dd) ==> "+date1);
- System.out.println("参数传递 date2(yyyy/MM/dd HH:mm:ss) ==> "+date2);
- return "{'module':'data param'}"; }
- }
- //@DateTimeFormat是形参注解,用在SpringMVC控制器方法形参前面,用于设定日期时间型数据格式//属性:pattern:日期时间格式字符串
परीक्षणं प्राप्नुवन्तु : १.
json पैरामीटर् कुञ्जीनाम औपचारिकपैरामीटर् ऑब्जेक्ट् एट्रिब्यूट् नाम इव अस्ति भवान् Pojo प्रकारस्य औपचारिकं पैरामीटर् परिभाषयित्वा पैरामीटर्स् प्राप्तुं शक्नोति ।
- @RestController
- public class SimplePojo {
- @RequestMapping("/jsonParam")
- public String jsonParam(@RequestBody user user) {
- System.out.println(user);
- return "yes";
- }
- }
- //user这和前面的复杂实体参数一样
@requestbody इत्यस्य माध्यमेन json इत्यस्य उपयोक्तृसत्तावर्गे समाविष्टं कुर्वन्तु
प्रथमं निर्देशांकं आयातयन्तु
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.9.0</version>
- </dependency>
Json दत्तांशस्य स्वचालितरूपान्तरणस्य समर्थनं सक्षमं कुर्वन्तु
- @Configuration
- @ComponentScan("com.itheima.controller")
- //开启json数据类型自动转换
- @EnableWebMvc
- public class SpringMvcConfig {
- }
- //集合参数:json格式
- //1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
- //2.使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据
- //它用来将请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次
- @RequestMapping("/listParamForJson")
- @ResponseBody
- public String listParamForJson(@RequestBody List<String> likes){
- System.out.println("list common(json)参数传递 list ==> "+likes);
- return "{'module':'list common for json param'}";
- }
- //POJO参数:json格式
- //1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
- //2.使用@RequestBody注解将外部传递的json数据映射到形参的实体类对象中,要求属性名称一一对应
- @RequestMapping("/pojoParamForJson")
- @ResponseBody
- public String pojoParamForJson(@RequestBody User user){
- System.out.println("pojo(json)参数传递 user ==> "+user);
- return "{'module':'pojo for json param'}";
- }
Get अनुरोधं कुर्वन् : १.
- {
- "name":"xixi",
- "age":21,
- "address":{
- "provice":"taiyuan",
- "city":"taiyuan"
- }
- }
- //集合参数:json格式
- //1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
- //2.使用@RequestBody注解将外部传递的json数组数据映射到形参的保存实体类对象的集合对象中,要求属性名称一一对应
- @RequestMapping("/listPojoParamForJson")
- @ResponseBody
- public String listPojoParamForJson(@RequestBody List<User> list){
- System.out.println("list pojo(json)参数传递 list ==> "+list);
- return "{'module':'list pojo for json param'}";
- }
Get अनुरोधं कुर्वन् : १.
- [{"name":"xixi","age":12},
- {"name":"haha","age":21}
- ]
मार्गमापदण्डानां परिचयार्थं {...} इत्यस्य उपयोगं कुर्वन्तु ।
a path parameter
- @RestController
- public class SimplePojo {
- @RequestMapping("/path/{id}")
- public String pathParam(@PathVariable Integer id) {
- System.out.println(id);
- return "yes";
- }
- }
डाकपालेन परीक्षितः url अस्तिhttp://स्थानीयमेजबान:8080/मार्ग/1
बहुविधमार्गमापदण्डाः
- @RestController
- public class SimplePojo {
- @RequestMapping("/path/{id}/{name}")
- public String pathParam(@PathVariable Integer id ,@PathVariable String name) {
- System.out.println(id+":"+name);
- return "yes";
- }
- }
डाकपालेन परीक्षितः url अस्तिhttp://localhost:8080/path/1/cat
प्रश्नः- विकासकाले याचिताः मार्गाः भिन्नाः भवेयुः, परन्तु यदि समानाः मार्गाः सन्ति तर्हि अहं न जानामि यत् कस्य नाम----------प्रायः माध्यमेनअनुरोधमार्गे उपसर्गरूपेण मॉड्यूलनाम सेट् कुर्वन्तु
इदं मेथड् एनोटेशनं क्लास् एनोटेशनं च अस्ति
SpringMVC नियन्त्रकविधिपरिभाषायाः उपरि स्थापयन्तु
नियन्त्रकविधिअनुरोधमार्गं सेट् कर्तुं प्रयुक्तम्, यदि वर्गे वर्तमाननियन्त्रकविधिं सेट् करोति तर्हि अभिगमनमार्गस्य उपसर्गं अनुरोधयन्तु
- @Controller
- //设置模块名作为请求路径的前缀
- @RequestMapping("/user")
- public class UserController {
- //请求路径映射
- @RequestMapping("/save")
- @ResponseBody
- public String save(){
- System.out.println("user save ...");
- return "{'module':'user save'}";
- }
- //请求路径映射
- @RequestMapping("/delete")
- @ResponseBody
- public String delete(){
- System.out.println("user delete ...");
- return "{'module':'user delete'}";
- }
-
- }
गुणाः: मूल्यं (पूर्वनिर्धारितम्): अभिगममार्गस्य अनुरोधः।अभिगममार्गोपसर्गः वा
@RequestParam एकं औपचारिकं पैरामीटर् एनोटेशनम् अस्ति, यत् SpringMVC नियन्त्रकविधि पैरामीटर् परिभाषायाः सम्मुखे स्थितम् अस्ति, यस्य उपयोगः अनुरोधपैरामीटर् तथा प्रोसेसर मेथड् पैरामीटर् इत्येतयोः मध्ये सम्बन्धं बाध्यं कर्तुं भवति
पैरामीटर्स्: आवश्यकम्: आवश्यकं पैरामीटर् अस्ति वा DefaultValue: पैरामीटर् इत्यस्य पूर्वनिर्धारितं मूल्यम्
मेथड् एनोटेशन्स् तथा क्लास एनोटेशन्स् सन्ति
नियन्त्रकविधि/वर्गे स्थितम्
कार्यम् इतिविधिरिटर्न् मूल्यं प्रति प्रत्यक्षतया प्रतिक्रियां ददातु यदि रिटर्न् वैल्यू प्रकारः एण्टी ऑब्जेक्ट्/सङ्ग्रहः अस्ति, तर्हि तत् JSON प्रारूपप्रतिसादे परिवर्तितं भविष्यति ।
@ RestController=@नियंत्रक+@प्रतिक्रियाशरीर
- @RestController
- public class ResponseController {
- @RequestMapping("/hello")
- public String hello(){
- System.out.println("hello world");
- return "hello world~";
- }
- @RequestMapping("/getAddr")
- public Address getAddr(){
- Address addr=new Address();
- addr.setProvince("山西");
- addr.setCity("太原");
- return addr;
- }
- @RequestMapping("/listAddr")
- public List<Address> ListAddr(){
- List<Address> list=new ArrayList<>();
- Address addr=new Address();
- addr.setProvince("山西");
- addr.setCity("太原");
- Address addr2=new Address();
- addr2.setProvince("山");
- addr2.setCity("太");
- list.add(addr);
- list.add(addr2);
- return list;
- }
- }
परीक्षा डाकपाले प्रविष्टा भवतिhttp://स्थानीयमेजबान:8080/listAddrतत्, अन्यसदृशम्
बहिः प्रकाशितः प्रत्येकं विधिः कार्यात्मकः अन्तरफलकः इति उच्यते (उदाहरणार्थं उपरि त्रयः अन्तरफलकाः सन्ति), मार्गः च तेषां अभिगमनमार्गः भवति ।
समस्या अस्ति यत् तेषां प्रतिक्रियाफलं भिन्नं भवति, परिणामानां अन्तिमविश्लेषणं च अधिकं कष्टप्रदं भवति, अतः प्रतिक्रियापरिणामानां एकीकरणस्य आवश्यकता वर्तते ।
- public class Result {
- private Integer code;
- private String msg;
- private Object data;
- public Result(){
-
- }
- public Result(Integer code,String msg,Object data){
- this.code=code;
- this.msg=msg;
- this.data=data;
-
- }
- public Integer getCode() {
- return code;
- }
-
- public void setCode(Integer code) {
- this.code = code;
- }
-
- public String getMsg() {
- return msg;
- }
-
- public void setMsg(String msg) {
- this.msg = msg;
- }
-
- public Object getData() {
- return data;
- }
-
- public void setData(Object data) {
- this.data = data;
- }
- public static Result success(Object data){
- return new Result(1,"success",data);
- }
- public static Result success(){
- return new Result(1,"success",null);
- }
- public static Result error(String msg){
- return new Result(0,msg,null);
- }
- @Override
- public String toString() {
- return "Result{" +
- "code=" + code +
- ", msg='" + msg + ''' +
- ", data=" + data +
- '}';
- }
- }
- @RestController
- public class ResponseController {
- @RequestMapping("/hello")
- public Result hello(){
- System.out.println("hello world");
- //return new Result(1,"success","hello world");
- return Result.success("hello world~");//需要给前端传送数据
- }
- @RequestMapping("/getAddr")
- public Result getAddr(){
- Address addr=new Address();
- addr.setProvince("山西");
- addr.setCity("太原");
- return Result.success(addr);
- }
- @RequestMapping("/listAddr")
- public Result ListAddr(){
- List<Address> list=new ArrayList<>();
- Address addr=new Address();
- addr.setProvince("山西");
- addr.setCity("太原");
- Address addr2=new Address();
- addr2.setProvince("山");
- addr2.setCity("太");
- list.add(addr);
- list.add(addr2);
- return Result.success(list);
- }
- }