Kafka实战笔记
关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图
- Kafka入门
- 为什么选择Kafka
- Karka的安装、管理和配置
- Kafka的集群
- 第一个Kafka程序
afka的生产者
- Kafka的消费者
- 深入理解Kafka
- 可靠的数据传递
- Spring和Kalka的整合
- Sprinboot和Kafka的整合
- Kafka实战之削峰填谷
- 数据管道和流式处理(了解即可)
- Kafka实战之削峰填谷
import java.util.List;
/**
-
包装的pojo传递
-
@author Steven
*/
public class QueryVo {
private Item item;
private Integer[] ids;
private List items;
public List getItems() {
return items;
}
public void setItems(List items) {
this.items = items;
}
public Integer[] getIds() {
return ids;
}
public void setIds(Integer[] ids) {
this.ids = ids;
}
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
}
(3)访问页面http://localhost:8080/queryItem.action
(4)测试项目
a、修改ItemController.java
@RequestMapping(“queryItem”)//绑定请求地址
public String queryItem(QueryVo vo,Integer[] ids, Model model){
if(vo.getItem() != null){
System.out.println(vo.getItem().toString());
}
if(ids != null && ids.length > 0) {
for (Integer id : ids) {
System.out.println(id);
}
}
if(vo.getItem() != null && vo.getItems().size() > 0) {
for (Item item : vo.getItems()) {
System.out.println(item);
}
}
//模拟搜索商品
List itemList = itemService.getItemList();
model.addAttribute(“itemList”, itemList);
return “itemList”;
}
b、访问页面测试并提交参数
访问页面http://localhost:8080/queryItem.action
修改内容并提交表单
页面报错
修改jsp页面内容
重新提交页面
1、配置多个请求地址
(1)修改ItemController当中的itemList方法
@RequestMapping(value = {“itemList”,“itemList2”})
public ModelAndView itemList() {
ModelAndView mav = new ModelAndView();
List itemList = itemService.getItemList();
mav.addObject(“itemList”, itemList);
// mav.setViewName(“/WEB-INF/jsp/itemList.jsp”);
mav.setViewName(“itemList”);
return mav;
}
(2)运行并测试
http://localhost:8080/itemList.action
使用绑定的第二个访问http://localhost:8080/itemList2.action
2、@RequestMapping加在类的上面:分目录管理
@Controller
@RequestMapping(“item”)
public class ItemController {
@Autowired
private ItemService itemService;
@RequestMapping(value = {“itemList”,“itemList2”})
public ModelAndView itemList() {
ModelAndView mav = new ModelAndView();
List itemList = itemService.getItemList();
mav.addObject(“itemList”, itemList);
// mav.setViewName(“/WEB-INF/jsp/itemList.jsp”);
mav.setViewName(“itemList”);
return mav;
}
运行并访问项目
新的访问地址:http://localhost:8080/item/itemList.action
演示完注释一下
3、设置固定的提交请求方式
(1)设置为只接收post请求
修改ItemController.java当中的updateItem方法
@RequestMapping(value=“updateItem”,method = RequestMethod.POST)
public String updateItem(Item item,Model model){
itemService.updateItem(item);
model.addAttribute(“item”, item);
model.addAttribute(“msg”, “修改商品信息成功”);
return “itemEdit”;
}
(2)设置为接收post和get请求
修改ItemController.java当中的updateItem方法
/**
-
修改商品
-
演示pojo参数绑定
-
@param item
-
@return
*/
@RequestMapping(value=“updateItem”,method = {RequestMethod.POST,RequestMethod.GET})
public String updateItem(Item item,Model model){
itemService.updateItem(item);
model.addAttribute(“item”, item);
model.addAttribute(“msg”, “修改商品信息成功”);
return “itemEdit”;
}
(3)在Tomcat的server.xml文件当中配置get请求的编码格式
1、返回void
(1)创建新页面
<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>
${ msg }
(2)在ItemController当中创建queryVoid方法
a、request响应用户请求
@RequestMapping(“queryVoid”)
public void queryVoid(HttpServletRequest request,HttpServletResponse response) throws Exception {
request.setAttribute(“msg”, “这个是request响应的消息”);
request.getRequestDispatcher(“/WEB-INF/jsp/msg.jsp”).forward(request, response);
}
运行并测试
http://localhost:8080/queryVoid.action
b、response响应用户请求
@RequestMapping(“queryVoid”)
public void queryVoid(HttpServletRequest request,HttpServletResponse response) throws Exception {
//request响应用户请求
/*
-
request.setAttribute(“msg”, “这个是request响应的消息”);
-
request.getRequestDispatcher(“/WEB-INF/jsp/msg.jsp”).forward(request,
-
response);
*/
//response的响应用户请求
response.sendRedirect(“/itemList.action”);
}
运行并测试http://localhost:8080/itemList.action
c、response打印消息
@RequestMapping(“queryVoid”)
public void queryVoid(HttpServletRequest request,HttpServletResponse response) throws Exception {
//request响应用户请求
/*
-
request.setAttribute(“msg”, “这个是request响应的消息”);
-
request.getRequestDispatcher(“/WEB-INF/jsp/msg.jsp”).forward(request,response);
*/
//response的响应用户请求
//response.sendRedirect(“/itemList.action”);
PrintWriter printwriter = response.getWriter();
printwriter.println(“response”);
}
http://localhost:8080/queryVoid.action
2、返回String
(一)SpringMVC请求转发
(1)修改ItemController类当中updateItem方法:
/**
-
修改商品
-
演示pojo参数绑定
-
@param item
-
@return
*/
@RequestMapping(value=“updateItem”,method = {RequestMethod.POST,RequestMethod.GET})
public String updateItem(Item item,Model model){
itemService.updateItem(item);
model.addAttribute(“item”, item);
model.addAttribute(“msg”, “修改商品信息成功”);
//return “itemEdit”;
return “forward:itemEdit.action”;
}
(2)修改itemList.jsp页面
点击提交修改信息
(二) SpringMVC重定向
(1)修改ItemController,设置对应更新方法的跳转到列表页面,当中的updateItem方法
/**
-
修改商品
-
演示pojo参数绑定
-
@param item
-
@return
*/
@RequestMapping(value=“updateItem”,method = {RequestMethod.POST,RequestMethod.GET})
public String updateItem(Item item,Model model){
itemService.updateItem(item);
model.addAttribute(“item”, item);
model.addAttribute(“msg”, “修改商品信息成功”);
//return “itemEdit”;
//return “forward:itemEdit.action”;
return “redirect:itemList.action”;
}
(2)运行测试并访问:http://localhost:8080/itemEdit.action
跳转成功
(三)方法返回值乱码问题
请求乱码问题{
提交的问题{
post乱码:过滤器解决;
get乱码:tomcat当中配置URIEncoding=“utf-8”
}
响应乱码{
获取getWriter之前:response.setCharacterEncoding(“utf-8”);
}
}
1、异常演示:运行时异常
(1)在ItemController当中queryVoid方法当中设置一个异常
int i = 1 / 0;
(2)运行项目测试该方法
http://localhost:8080/queryVoid.action
抛出异常
2、处理异常
思想:做一个全局异常处理器,处理所有没有处理过的运行时异常用于更友好的提示用户
(1)创建全局异常处理器
创建一个CustomerExecptionResolver类实现HandlerExceptionResolver接口
package com.itzheng.springmvc;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/*
- 全局异常处理器
*/
public class CustomerExecptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object hanlder,
Exception ex) {
ModelAndView mav = new ModelAndView();
mav.addObject(“msg”,“系统发生异常,请联系管理员!”);
mav.setViewName(“msg”);
return mav;
}
}
(2)配置全局异常处理器
运行项目测试该方法
http://localhost:8080/queryVoid.action
3、更智能,更友好的提示,解决方案
(1)新建自定义异常类:MyException
package com.itzheng.springmvc.exception;
/*
- 自定义异常
*/
public class MyException extends Exception {
private String msg;
public MyException() {
super();
}
public MyException(String msg) {
super();
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
上述的面试题答案都整理成文档笔记。 也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
ss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NzU3MDM0,size_16,color_FFFFFF,t_70)
package com.itzheng.springmvc.exception;
/*
- 自定义异常
*/
public class MyException extends Exception {
private String msg;
public MyException() {
super();
}
public MyException(String msg) {
super();
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
[外链图片转存中…(img-f3fOUzwj-1715470224534)]
上述的面试题答案都整理成文档笔记。 也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
[外链图片转存中…(img-A5jo7tmJ-1715470224534)]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。