百度 手机网站 收录,温州建设网站,我的个人网页图片,石家庄制作网站的公司简介文章目录 参数传递重定向与转发REST风格 参数传递
ModelAndView#xff1a;包含视图信息和模型数据信息
public ModelAndView index1(){// 返回页面ModelAndView modelAndView new ModelAndView(视图名);// 或// ModelAndView modelAndView new ModelAndView(… 文章目录 参数传递重定向与转发REST风格 参数传递
ModelAndView包含视图信息和模型数据信息
public ModelAndView index1(){// 返回页面ModelAndView modelAndView new ModelAndView(视图名);// 或// ModelAndView modelAndView new ModelAndView();// modelAndView.setViewName(视图名);// 添加数据模型 可在视图中使用 作用域为请求范围request scopemodelAndView.addObject(键,值);return modelAndView;
}Model以Map方式进行存储用于向作用域中存值
public String index1(Model model){// 在 Model 中增加模型数据 作用域为请求范围request scopemodel.addAttribute(userName,张三);return /user.jsp;
}在 Model 中增加模型数据若不指定 key则默认使用对象的类型作为 key Map以Map方式进行存储用于向作用域中存值
public String index1(MapString ,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 --
dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/versionscopeprovided/scope
/dependencypublic 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.jspforward:可省略return forward:user;}
}配置视图解析器确保视图名称能够正确解析为视图文件。使用 InternalResourceViewResolver 示例配置
bean classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/views//property namesuffix value.jsp/
/beanInternalResourceViewResolver 被配置为前缀为 /WEB-INF/views/后缀为 .jsp当控制器返回 forward:user 时视图解析器会将 user 解析为 /WEB-INF/views/user.jsp。 ResponseBody返回JSON数据 一般用于方法上
1、首先确保你的项目中已经包含了 Jackson 库
!-- JSON依赖 --
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.4.3/version
/dependency
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.4.3/version
/dependency2、在 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 ResultJSONT {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 ResultJSONProvider findProviderById(RequestParam Integer id) {// 创建一个示例Provider对象Provider provider new Provider();provider.setId(111);provider.setProName(小米科技);// 返回成功结果(JSON数据)return ResultJSON.success(provider);}
}可以返回集合
ListProvider list Arrays.asList(provider,provider1,provider2);
return ResultJSON.success(list);DateTimeFormat用户对象属性控制入参时日期类型转换
DateTimeFormat(patternyyyy-MM-dd HH:mm:ss) // 年月日时分秒
private Date userLoginEndtime;JsonFormat返回 JSON 数据时日期类型处理
DateTimeFormat(patternyyyy-MM-dd HH:mm:ss)
JsonFormat(patternyyyy-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风格
RESTRepresentational 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