《web应用技术》第三次课后练习

1、springboot入门程序撰写并启动

代码

package wust.edu.Hello;

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

//请求处理类
@RestController
public class HelloController {
    @RequestMapping("/myhello")
    public String Hello(){
        System.out.println("Hello world!");
        return "Hello World!";
    }
}

启动:

浏览器地址栏输入localhost:8080/myhello

2、使用postman练习参数的获取

简单参数请求

1)通过HttpServletRequest手动获取请求参数

package wust.edu.Hello;

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

import javax.servlet.http.HttpServletRequest;

@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    public  String simpleParam(HttpServletRequest request) {
       //获取请求参数
       String name=request.getParameter("name");
       String agestr=request.getParameter("age");
       int age=Integer.parseInt(agestr);
       System.out.println(name+";"+age);
       return "ok";
    }
}

postman中请求参数

2)springboot请求参数

//基于springboot请求参数
@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    public String simpleParam(String name, Integer age) {
        System.out.println(name + ":" + age);
        return "OK";
    }
}

get请求

post请求

实体参数请求

1)简单实体参数

user类的封装

package wust.edu.pojo;

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

    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;
    }


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

请求函数

//简单实体请求参数
@RestController
public class RequestController {
    @RequestMapping("/simplePojo")
    public String simplePojo(user userInfo){
        System.out.println(userInfo);
        return "OK";
    }
}

2)复杂实体参数——嵌套pojo参数

user类和Address类的封装

//Address
package wust.edu.pojo;

public class Address {
    private String province;
    private  String city;

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    @Override
    public String toString() {
        return "Address{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}';
    }
}



//user
package wust.edu.pojo;

public class user {
    private String name;
    private  Integer age;
    private Address address;

    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 Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

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

请求函数

//实体请求参数
@RestController
public class RequestController {
    @RequestMapping("/simplePojo")
    public String simplePojo(user userInfo){
        System.out.println(userInfo);
        return "OK";
    }
}

数组集合请求参数

1)数组参数

请求函数

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

2)集合参数

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

日期时间请求参数

@RestController
public class RequestController {
@RequestMapping("/DateParam")
public String DateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){
    System.out.println(updateTime);
    return "OK";
}
}

JSON请求参数

@RestController
public class RequestController {
    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody user u) {
        System.out.println(u);
        return "OK";
    }
}

路径请求参数

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

响应——字符串

@RestController
public class Responseacontroller {
    //响应字符串
    @RequestMapping("/Hello")
    public  String Hello(){
        System.out.println("Hello world~");
        return "Hello world~";
    }
}

响应——JSON

响应——集合

@RestController
public class Responseacontroller {
    @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;
    }
}

响应——result

代码:

@RestController
public class Responseacontroller {
    //响应字符串
    @RequestMapping("/Hello")
    public Result Hello(){
        System.out.println("Hello world~");
        //return new Result(code:1,msg:"success",data:"Hello world~");
        return Result.success("Hello world~");
    }

    //响应JSON
    @RequestMapping("/getAddr")
    public Result getAddr(){
        Address addr=new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");
        return Result.success(addr);
    }

    //响应集合,@requestbody会将其转换成json再return
    @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);
    }
}

响应例子

响应——案例

代码

package wust.edu.Hello;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import wust.edu.pojo.Emp;
import wust.edu.pojo.Result;
import wust.edu.utils.XmlParserUtils;

import java.util.List;

@RestController
public class EmpController {
@RequestMapping("/listEmp")
    public Result list(){
    //加载并解析emp.xml文件
    String file=this.getClass().getClassLoader().getResource("emp.xml").getFile();//动态获取emp.xml路径
    System.out.println(file);
    List<Emp> empList=XmlParserUtils.parse(file,Emp.class);//将file封装到Emp中

    //对数据进行转换处理
    //gender
    empList.stream().forEach(emp -> {
       String gender= emp.getGender();
       if("1".equals(gender)){
           emp.setGender("男");
       }
       else if("2".equals(gender)){
           emp.setGender("女");
       }

       //job
        String job=emp.getJob();
        if("1".equals(job)){
            emp.setJob("讲师");
        }
        else if("2".equals(job)){
            emp.setJob("班主任");
        }
        else if("3".equals(job)){
            emp.setJob("就业指导");
        }
            }

    );
    //响应数据
return Result.success(empList);
    }
}

响应结果:

页面呈现:

3、体会前端页面向后端发送数据的过程。并且自己尝试将之前的注册页面的信息发送到服务端。

问题一:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body style="font-size: 30px">
<form action="addProduct">
 
  产品名称 :<input type="text" name="name" value=""><br />
  产品价格: <input type="text" name="price" value=""><br />
 
  <input type="submit" value="增加商品">
 
  <br><br><br><br>test2,addProduct1 ,productResult.html
</form>
</body>
</html>
package edu.wust.pojo;
 
public class Product {
 
    private String name;
    private float price;
 
 
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
 
 
 
}
package edu.wust.controller;
import edu.wust.pojo.Result;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
 
import edu.wust.pojo.Product;
 
import javax.servlet.http.HttpServletRequest;
 
@RestController
public class ProductController {
 
    @RequestMapping("/addProduct1")
    public String simpleParam1(HttpServletRequest request) {
        String name = request.getParameter("name");
        String ageStr = request.getParameter("price");
        int price = Integer.parseInt(ageStr);
        System.out.println("addProduct1:"+name + "  :  " + price);
        return "OK";
    }
 
    @RequestMapping("/addProduct")
    public String simpleParam(String name , Integer price){
        System.out.println("您输入的信息是:"+name+"  :  "+price);
        return "OK";
    }
 
    @RequestMapping("/addProduct2")
    public String simpleParam2(Product product){
        System.out.println(product);
        return "OK";
    }
 
}

页面效果

问题二

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="addDemo" method="post">
  <ul style="list-style:none;line-height:30px">
    <li>输入用户名:
      <input type="test" name="name"/>
      <br/>
    </li>
    <li>
      选择性别:
      <input type="radio" name="sex" value="boy"/>男
      <input type="radio" name="sex" value="girl"/>女
      <br/>
    </li>
    <li>
      选择密码提示问题:
      <select name="question">
        <option value="母亲生日">母亲生日</option>
        <option value="宠物名称">宠物名称</option>
      </select>
      <br/>
    </li>
    <li>
      请输入问题答案:
      <input type="text" name="answer"/>
      <br/>
    </li>
    <li>
      请选择个人爱好:
      <div style="width:400px">
        <input type="checkbox" name="like" value="sing and dance"/>唱歌跳舞
        <input type="checkbox" name="like" value="game"/> 玩游戏
        <input type="checkbox" name="like" value="movie"/>看电影
      </div>
    </li>
    <li>
      <input type="submit" value="提交"/>
    </li>
  </ul>
</form>
</body>
</html>
package wust.edu.pojo;

public class demo {
    private String name;
    private String sex;
    private String question;
    private String answer;
    private String[] like;

    public String getName() {
        return name;
    }

    public String getQuestion() {
        return question;
    }

    public void setQuestion(String question) {
        this.question = question;
    }

    public String[] getLike() {
        return like;
    }

    public void setLike(String[] like) {
        this.like = like;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAnswer() {
        return answer;
    }

    public void setAnswer(String answer) {
        this.answer = answer;
    }
}
package wust.edu.Hello;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import wust.edu.pojo.demo;

import javax.servlet.http.HttpServletRequest;

@RestController
public class demoController {
    @RequestMapping("/addDemo")
    public String addDemo(demo d){
        System.out.println(d);
        return "OK";
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值