一、简单说下SpringMVC的工程流程或者原理图
流程
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet调用HandlerAdapter处理器适配器
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户
二、在WEB开发中,如何解决post 和 get 请求乱码问题。
POST乱码处理方式:
大家都知道WEB项目中请求时候都会经过web.xml文件,所以post请求中乱码问题一般都在这处理,处理方式如下:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
GET乱码解决方式有两种处理方式:
第一种:在tomcat中conf文件中server,xm目录中中添加编码与工程编码一致,
<ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
第二种:tomcat默认编码是ISO8859-1,如果你项目中编码是UTF-8的话,需要将编码后的内容按UTF-8编码
String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
三、SpringMVC与struts的区别
1、SpringMVC 的入口是servlet前端控制器(DispacherServlet),而struts的入口是一个filter过滤器。
2、SpringMV基于方法开发,传参数形式是以方法形参传参,struts基于类开发,传递参数通过类的属性。
3、Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。
四、SpringMVC核心入口是什么?Struts1 和Struts2分别是什么?
答案:SpringMVC入口是前端控制器,Struts1是ActionServlet,struts2是一个filter过滤器。
五、SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代
答:一般是都是使用注解@Controller,表示是表现层,不能用别的注解代替。
六、@RequestMapping注解用在类上面有什么作用?
七、在请求拦截中,我想拦截get请求的方法,怎么配置?
答:
第一种;可以在注解@RequestMapping中添加mehthod = Requestmethod.GET属性。
第二种,可以在代码中request,getMethod()获取请求方式,在坐响应的判断。
八、我想在拦截的方法里面得到我从前台传进来的参数,我应该怎么得到?
答:直接在形参里面声明这个参数就可以了,名字必须和前端传进来的名字一直。
如果传来的参数都是在同一个对象里面的,我们直接在形参转给你定义一个对象就可以拿到。
八、怎么样在方法里面得到Request,或者Session
答;直接带方法形参中定义request,SpringMVC自动将request对象传入。