预计阅读时间:12 分钟
1.什么是MVC? 简单介绍一下你的理解吧?
MVC是一个基于Java的轻量级Web框架,实现了请求驱动型的MVC设计模式。 通过分离Model和View,Web层与职责解耦,复杂的Web应用被划分为逻辑清晰的部分。 简化开发、减少错误并促进团队内开发人员之间的合作。
2.过程?
(1) 用户向前端控制器发送请求;
(2)收到请求后,调用处理器映射器并请求获取;
(3)处理器映射器根据请求URL找到具体的处理器,生成处理器对象和处理器拦截器(有的话生成)并一起返回;
(4) 调用处理器适配器;
(5)适配后调用具体的处理器(也称为后端控制器);
(6)执行完成后返回;
(7)返回执行结果;
(8) 传递给视图解析器进行解析;
(9) 解析后返回具体的View;
(10)渲染View(即将模型数据填充到视图中)
(11)回复用户。
3、优点:
(1)可以支持各种视图技术,而不仅仅是JSP;
(2)与框架集成(如IoC容器、AOP等);
(3)明确的角色分配:前端控制器()、请求到处理器映射()、处理器适配器()、视图解析器()。
(4) 支持各种请求资源的映射策略。
4.MVC的主要组成部分是什么?
(1)前端控制器(无需编程器开发)
作用:接收请求和响应结果,相当于一个转发器,减少了其他组件之间的耦合度。
(2) 处理器映射器(无需程序员开发)
功能:根据请求的URL进行搜索
(3) 处理器适配器
注意:编写时必须遵循所需的规则,这样适配器才能正确执行。
(4)处理器(需要程序员开发)
(5)视图解析器(无需程序员开发)
作用:解析视图,根据视图逻辑名解析为真实的视图(view)
(6)View视图(程序员需要开发jsp)
View是一个接口,其实现类支持不同的视图类型(jsp、pdf等)
5. 和 之间有什么区别?
(1)的入口是前端控制器(),入口是过滤器()。
(2)基于方法开发(一个URL对应一种方法)。 请求参数传递给方法的形参,可以设计为单例,也可以设计为多例(推荐单例)。 它基于类开发,通过类的属性来传递参数。 ,只能针对多个实例进行设计。
(3) 值栈用于存储请求和响应数据,通过OGNL访问数据。 通过参数解析器解析请求内容,并为方法参数赋值。 将数据和视图封装成对象,最后将Data中的模型通过域传输到页面。 Jsp视图解析器默认使用jstl。
6. 如何设置重定向和转发?
(1)转发:在返回值前添加“:”,如“:user.do?name=”
(2)重定向:在返回值前面添加“:”,如“:”
7.如何用AJAX互相调用?
通过该框架,可以将Java中的对象直接转换为Js可以识别的Json对象。 具体步骤如下:
(1)添加.jar
(2)在配置文件中配置json映射
(3)在接受Ajax的方法中,可以直接返回List等,但方法前面必须添加@注解。
8、POST请求出现中文乱码问题如何解决,GET请求如何处理?
(1)解决post请求乱码问题:
在web.xml中配置ter过滤器,设置为utf-8;
特尔
org..web..ter
UTF-8
特尔
/*
(2)get请求中文参数乱码的解决方法有两种:
① 修改配置文件,添加与项目代码一致的代码,如下:
②另一种重新编码参数的方法:
= new (.("").("-1"),"utf-8")
-1为默认编码,编码内容需要采用UTF-8编码。
9.MVC异常处理?
答:异常可以抛给框架,由框架处理; 我们只需要配置一个简单的异常处理程序,并在异常处理程序中添加一个视图页面即可。
10. 控制器是否处于单例模式? 如果有,存在哪些问题以及如何解决?
答:是单例模式,所以多线程访问时存在线程安全问题。 不要使用同步,这会影响性能。 解决方案是不要在控制器中写入字段。
11、常用的注解有哪些?
@:用于处理请求URL映射的注解,可用于类或方法上。 当用在类上时,意味着该类中所有响应请求的方法都使用该地址作为父路径。
@:该注解实现接收http请求的json数据,并将json转换为java对象。
@:该注解实现将方法返回对象转换为json对象并响应客户端。
12. 中的控制器一般使用哪个注解? 有没有其他注释可以代替?
答:一般用@注解来表示是表示层,不能用其他注解代替。
13、如果我想在拦截请求时拦截以get方式提交的方法,如何配置?
答:可以在@注解中添加=.GET。
14.方法中如何获取?
答:如果直接在方法的形参中声明的话,对象会自动传入。
15.如果想在拦截方法中获取前台传入的参数,如何获取?
答:可以直接在形参中声明该参数,但名称必须与传递的参数相同。