蒙古文网站建设汇报材料,建设监理有限责任公司网站,网站备案信息被工信部删除,微信公众号开发多少钱1、什么是SpringMVC#xff1f;
SpringMVC是一个基于Java的实现了MVC设计模式的“请求驱动型”的轻量级WEB框架#xff0c;通过把model#xff0c;view#xff0c;controller 分离#xff0c;将web层进行职责的解耦#xff0c;把复杂的web应用分成逻辑清晰的几个部分
SpringMVC是一个基于Java的实现了MVC设计模式的“请求驱动型”的轻量级WEB框架通过把modelviewcontroller 分离将web层进行职责的解耦把复杂的web应用分成逻辑清晰的几个部分简化开发减少出错方便开发人员之间的配合。 2、SpringMVC的处理流程
用户发送请求给前端控制器DispatcherServletDispatcherServlet收到请求后调用处理器映射器HandlerMapping获取请求Handler处理器映射器根据请求url找到具体的处理器Handler生成处理器对象以及处理器拦截器如果有就生成然后一并返回给DispatcherServletDispatcherServlet调用处理器适配器HandlerAdapter请求执行Handler处理器适配器HandlerAdapter 经过适配调用具体处理器来处理业务逻辑Handler执行完成之后返回ModelAndViewHandlerAdapter将handler执行结果的ModelAndView返回给DispatcherServletDispatcherServlet将ModelAndView传给视图解析器ViewResolver进行解析ViewResolver解析后将解析结果返回给DispatcherServletDispatcherServlet调用视图View组件将数据进行渲染并将渲染结果静态视图返回给DispatcherServletDispatcherServlet响应用户的请求。DispatcherServlet前端控制器实现的是转发的功能相当于一个转发器减少了其他组件之间的耦合度HandlerMapping处理器映射器根据请求的URL来查找处理器HandlerHandler处理器程序员开发的执行业务逻辑ViewResolver视图解析器用于视图的解析根据视图逻辑名将ModelAndView解析成真正的视图viewview视图接口他的实现类型支持不同的视图类型用于渲染视图。3、springMVC 的优点
清晰的角色分配将复杂的web层进行解耦降低了开发难度更加灵活也更加容易拓展
支持各种视图技术而不仅仅是局限于JSP
可以与spring框架很好的集成
支持各种请求资源的映射策略 4、springMVC怎么样设置重定向和转发的
转发直接返回转发的路径如转发给xxx.jsp
重定向在返回值前加上“redirect”
转发RequestMapping(/add)
public String addBook(String name, String author, double price){System.out.println(---book add);return /tips.jsp;
}RequestMapping(/add)
public ModelAndView addBook(String name, String author, double price){System.out.println(---book add);ModelAndView modelAndView new ModelAndView(/tips.jsp);return modelAndView;
}
重定向RequestMapping(/add)
public String addBook(String name, String author, double price){System.out.println(---book add);return redirect:/tips.jsp;
}RequestMapping(/add)
public ModelAndView addBook(String name, String author, double price){System.out.println(---book add);ModelAndView modelAndView new ModelAndView(redirect:/tips.jsp);return modelAndView;
} 5、springMVC常用的注解有哪些
RequestMapping 用于处理请求url映射的注解可以用于类或者方法上用于类上表示类中所有请求的响应请求方法都是以该地址作为父路径
RequestBody注解实现接收http请求的json数据将json转为Java对象
ResponseBody注解实现controller方法返回对象转化为json对象响应给客户。
RequestMapping(/update)
ResponseBody
public ListBook update() {System.out.println(---book update);ListBook books new ArrayListBook();books.add(new Book(1,Java,老张,2.22));books.add(new Book(2,C,老李,3.22));return books;
}RequestMapping(/update)
public void update(RequestBody Book book){System.out.println(---book update);System.out.println(book);
} 6、 SpringMVC中的控制器注解一般用哪一个有没有别的可以替代
一般用Controller注解也可以使用RestController注解RestController注解相当于ControllerResponseBody 表示为表现层一般不用其他注解代替。 7、springMVC 和 structs2 的区别有哪些、
入口springMVC入口是一个servlet前端控制器dispatchServlet,structs2的入口是一个filter过滤器开发方式springMVC基于方法开发一个url对应一个方法请求参数传递到方法的形参structs2是基于类开发传递参数通过类的属性Struts采用值栈存储请求和响应的数据通过OGNL存取数据springmvc通过参数解析器是将request请求内容解析并给方法形参赋值将数据和视图封装成ModelAndView对象最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。
8、SpringMVC中的拦截器
SpringMVC中的拦截器就类似于servlet-api中的过滤器可以对控制器的请求进行拦截实现相关的预处理和后处理。拦截器在SpringMVC配置文件里面进行配置不会拦截SpringMVC放行的资源jsp、HTML、css等
8.1 创建拦截器实现HandlerInterceptor接口重写预处理和后处理方法
public class MyInterceptor1 implements HandlerInterceptor {//预处理方法public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(--------------预处理);EnumerationString keys request.getParameterNames();while (keys.hasMoreElements()){String key keys.nextElement();if(bookId.equals(key)){return true;}}response.setStatus(400);return false;}//后处理方法public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {modelAndView.addObject(tips,这是通过拦截器的后处理添加的数据);System.out.println(--------------后处理);}
}
8.2 配置拦截器
mvc:interceptorsmvc:interceptormvc:mapping path/book/query/mvc:mapping path/book/add/mvc:mapping path/student/**/mvc:exclude-mapping path/student/add/bean classcom.qfedu.utils.MyInterceptor1//mvc:interceptor
/mvc:interceptors
8.3 拦截器链将多个拦截器按照一定的顺序构成一个执行链。 10、SpringMVC的异常处理
在系统运行过程中可能由于运行环境用户操作资源不足等各方面导致系统出现异常我们通常不希望将这些异常呈现给用户因此可以在服务器进行特点的处理当异常发生时呈现给用户一个统一的可读的异常提示界面。
10.1 HTTP状态异常统一处理方式
首先创建一个用于提示异常的界面 404.jsp 然后在web.xml中进行配置
error-pageerror-code404/error-codelocation/404.jsp/location
/error-page
10.2 Java代码异常的统一处理方式
还是先创建异常处理界面 err.jsp
然后在web.xml中进行配置可以定义异常类型
error-pageexception-typejava.lang.NumberFormatException/exception-typelocation/err.jsp/location
/error-page 或者定义异常处理类进行统一处理ExceptionHandler注解
ControllerAdvice
public class MyExceptionHandler {ExceptionHandler(NullPointerException.class)public String nullHandler(){return /err1.jsp;}ExceptionHandler(NumberFormatException.class)public String formatHandler(){return /err2.jsp;}
} 11 SpringMVC的控制器是不是单例模式如果是有什么问题怎么解决
是单例模式在多线程访问的时候有线程安全问题解决方案是在控制器中避免写可变状态变量如果需要使用这些可变状态可以使用ThredLocall机制进行解决为每个线程单独生成一份变量副本独立操作。。 12 如果在拦截请求中想拦截get方式提交的方法怎么配置
可以在RequestMapping注解里面加上methodRequestMethod.GET。 13 控制器如何接收前端传入的数据
13.1 接收请求行的传值 ----- RequestParam注解
/*接收请求行数据*/
RequestMapping(/add)
public void addBook(RequestParam(name) String a,RequestParam(author) String b,RequestParam(price) double c){System.out.println(---book add);System.out.println(a);System.out.println(b);System.out.println(c);
} 13.2 接收请求头的传值 ---- RequestHeader
RequestMapping(/list)
public void listBooks(RequestHeader(token) String token){System.out.println(---book list);
}
13.3 接收请求体 ---- RequestBody
RequestMapping(/update)
public void update(RequestBody Book book){System.out.println(---book update);System.out.println(book);
}