您的位置:首页 > 新闻 > 资讯 > 上海公共招聘网怎么打不开_重庆装修公司口碑排名_百度号码认证_商业软文案例

上海公共招聘网怎么打不开_重庆装修公司口碑排名_百度号码认证_商业软文案例

2025/3/9 7:44:07 来源:https://blog.csdn.net/m0_66584716/article/details/144266572  浏览:    关键词:上海公共招聘网怎么打不开_重庆装修公司口碑排名_百度号码认证_商业软文案例
上海公共招聘网怎么打不开_重庆装修公司口碑排名_百度号码认证_商业软文案例

文章目录

    • 参数传递
    • 重定向与转发
    • REST风格

参数传递

ModelAndView:包含视图信息和模型数据信息

public ModelAndView index1(){// 返回页面ModelAndView modelAndView = new ModelAndView("视图名");// 或// ModelAndView modelAndView = new ModelAndView();// modelAndView.setViewName("视图名");// 添加数据模型 可在视图中使用 作用域为请求范围(request scope)modelAndView.addObject("键","值");return modelAndView;
}

Model:以Map方式进行存储,用于向作用域中存值

public String index1(Model model){// 在 Model 中增加模型数据 作用域为请求范围(request scope)model.addAttribute("userName","张三");return "/user.jsp";
}

在 Model 中增加模型数据,若不指定 key,则默认使用对象的类型作为 key

Map:以Map方式进行存储,用于向作用域中存值

public String index1(Map<String ,Object> map){map.put("userName","张三");return "/user.jsp";
}

使用 @ModelAttribute@SessionAttributes 注解来处理模型数据和会话数据。

@ModelAttribute 注解用于将方法参数绑定到模型中,或者将方法返回值添加到模型中。它可以在方法级别或方法参数级别使用。

@Controller
public class UserController {@RequestMapping(value = "/user")public String index1(@ModelAttribute("user") User user) {user.setUserName("张三");System.out.println(user.getUserName());return "/user.jsp";}
}

@SessionAttributes 注解用于将特定的模型属性存储在 HTTP 会话中。它可以定义在控制器类上,以指定哪些模型属性需要存储在会话中。

@Controller
@SessionAttributes(value = {"userName"})
public class IndexController {@RequestMapping("/user")public ModelAndView index() {ModelAndView modelAndView = new ModelAndView("/user.jsp");// 存入 Request 作用域和 Session 作用域modelAndView.addObject("userName", "张三");return modelAndView;}
}

@SessionAttributes 的不同用法

// 按属性名存储:将 model 中指定名称的模型属性存储在会话中。
@SessionAttributes(value = {"userName", "userPwd"})
// 按类型存储:将 model 中所有指定类型的模型属性存储在会话中。
@SessionAttributes(types = User.class)
@SessionAttributes(types = {User.class, Dept.class})
// 按属性名和类型存储:将 model 中所有指定名称和类型的模型属性存储在会话中。
@SessionAttributes(value = {"user1", "user2"}, types = {Dept.class})
// 组合存储:将 model 中多个属性名和类型的模型属性存储在会话中。
@SessionAttributes(value = {"user1", "user2"}, types = {User.class, Dept.class})

servlet 方式

<!-- 引入servlet-api -->
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope>
</dependency>
public String cs(HttpServletRequest request, HttpServletResponse response, HttpSession session){session.setAttribute("userName","123");return "/user.jsp";
}

使用 Servlet 方式直接操作 HttpSession 对象,只存入 session 作用域中。

重定向与转发

@Controller
public class IndexController {@RequestMapping(value = "/index1", method = RequestMethod.GET)public String index1(User user, Model model) {// 设置用户姓名user.setUser_name("张三");model.addAttribute("user", user);// 重定向到 /user.jsp// return "redirect:/user.jsp";// 转发到 /user.jsp(forward:可省略)return "forward:user";}
}

配置视图解析器确保视图名称能够正确解析为视图文件。使用 InternalResourceViewResolver 示例配置:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"/><property name="suffix" value=".jsp"/>
</bean>

InternalResourceViewResolver 被配置为前缀为 /WEB-INF/views/,后缀为 .jsp,当控制器返回 forward:user 时,视图解析器会将 user 解析为 /WEB-INF/views/user.jsp

@ResponseBody:返回JSON数据 一般用于方法上

1、首先确保你的项目中已经包含了 Jackson 库

<!-- JSON依赖 -->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.4.3</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.4.3</version>
</dependency>

2、在 User 实体类上添加注解,控制 JSON 序列化

使用 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)来指定当属性为null时不序列化该属性。

@JsonInclude(JsonInclude.Include.NON_NULL) // 代替@JsonSerialize
public class User {}

前端也能判断,一般不加注解。

3、调整 Controller

确保 Controller 可以正确处理请求并返回 JSON 格式的数据

@RestController // @Controller + @ResponseBody
@RequestMapping("/api")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/testjson")public User jsons(@RequestParam long userId) {User user = this.userService.getUserById(userId);return user; // 直接返回对象}
}

使用 ResultJSON 工具类

public class ResultJSON<T> {private Integer code;private String msg;private T data;public ResultJSON(Integer code, String msg,T data) {this.code = code;this.msg = msg;this.data = data;}public static <T> ResultJSON success(T data){return new ResultJSON(200,"操作成功",data);}public static ResultJSON success(){return new ResultJSON(200,"操作成功",null);}public static ResultJSON success(Integer code,String msg){return new ResultJSON(code,msg,null);}public static ResultJSON error(){return new ResultJSON(400,"操作失败",null);}public static ResultJSON error(Integer code,String msg){return new ResultJSON(code,msg,null);}...
}
@RestController // @Controller + @ResponseBody
@RequestMapping("/provider")
public class ProviderController {@RequestMapping(value = "/findProviderById", method = RequestMethod.GET)public ResultJSON<Provider> findProviderById(@RequestParam Integer id) {// 创建一个示例Provider对象Provider provider = new Provider();provider.setId(111);provider.setProName("小米科技");// 返回成功结果(JSON数据)return ResultJSON.success(provider);}
}

可以返回集合

List<Provider> list = Arrays.asList(provider,provider1,provider2);
return ResultJSON.success(list);

@DateTimeFormat:用户对象属性,控制入参时日期类型转换

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") // 年月日时分秒
private Date userLoginEndtime;

@JsonFormat:返回 JSON 数据时日期类型处理

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date userLoginEndtime;

最常用的还是把日期类型改为字符串(前端取到的数据是 String)

private String userLoginEndtime;

@RequestHeader:获取请求头中的参数

在这里插入图片描述

@ResponseBody
@RequestMapping(value = "/index",method = RequestMethod.POST)
public User index(@RequestHeader(value = "token",defaultValue = "1",required = false) int tokenid){......
}

从 HTTP 头中获取名为 token 的值。如果这个头部信息不存在,它将使用默认值1。

REST风格

REST(Representational State Transfer)设计风格基于 HTTP 协议,利用 HTTP 的方法(如GET、POST、PUT、DELETE等)来操作资源。

在REST中,每个事物都被视为一种资源,可以是一个实体(例如用户、产品)、集合(例如用户列表)或更抽象的概念。每个资源都有一个唯一的标识符(URI),客户端通过这个标识符来访问资源。

@Controller
public class UserController {@RequestMapping(value = "/user/{userId}.html")public String index1(@PathVariable("userId") Long userId) {System.out.println("id : " + userId);return "user";  // 返回视图名称}
}
// 请求路径为:
.../user/userId.html 如 .../user/12.html

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com