16
2020
03

SpringMvc里面拦截器是怎么写的

有两种写法,一种是实现接口,另外一种是继承适配器类,然后在SpringMvc的配置文件中配置拦截器即可:<!-- 只针对部分请求拦截 --><mvc:interceptor>   <mvc:mapping path="/modelMap.do" />   <bean class="com.et.action.MyHa
16
2020
03

讲下SpringMvc的执行流程

系统启动的时候根据配置文件创建spring的容器, 首先是发送http请求到核心控制器disPatherServlet,spring容器通过映射器去寻找业务控制器,使用适配器找到相应的业务类,在进业务类时进行数据封装,在封装前可能会涉及到类型转换,执行完业务类后使用ModelAndView进行视图转发,数据放在model中,用map传递数据进行页面显示。
16
2020
03

Spring MVC的优点

1、易于通view框架无缝集成,采用IOC便于测试2、典型的纯MVC构架,Struts是不完全基于MVC框架的3、与tapestry是纯正的Servlet系统,(这也是相对于Struts的优势)
16
2020
03

Spring MVC的简介:

1、可以插入的MVC架构。这中架构可以通过一:内置的spring web框架 二是:Struts Web框架 来实现。2、spring。xml中还可以通过策略接口来实现其框架高度的配置,即:可配置多种视图技术,如:jsp velocity tiles iTest POI3、Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色
16
2020
03

什么是Spring MVC ?简单介绍下你对springMVC的理解?

Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
16
2020
03

SpringMVC的流程?

(1)用户发送请求至前端控制器DispatcherServlet;(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;(4)DispatcherServlet 调用 HandlerAdapter处理器适配器;(5)HandlerAdapter 经过适配调用 具体处理器(Handler,也叫
16
2020
03

Springmvc的优点:

(1)可以支持各种视图技术,而不仅仅局限于JSP;(2)与Spring框架集成(如IoC容器、AOP等);(3)清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)。(4) 支持各种请求资源的映射策略。
16
2020
03

Spring MVC的主要组件?

(1)前端控制器 DispatcherServlet(不需要程序员开发)作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。(2)处理器映射器HandlerMapping(不需要程序员开发)作用:根据请求的URL来查找Handler(3)处理器适配器HandlerAdapter注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。(4)处
16
2020
03

springMVC和struts2的区别有哪些?

(1)springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。(2)springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。(3)Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析
16
2020
03

SpringMVC怎么样设定重定向和转发的?

(1)转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4"(2)重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com"
16
2020
03

SpringMvc怎么和AJAX相互调用的?

通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :(1)加入Jackson.jar(2)在配置文件中配置json的映射(3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。
16
2020
03

如何解决POST请求中文乱码问题,GET的又如何处理呢?

(1)解决post请求乱码问题:在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8;<filter>    <filter-name>CharacterEncodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</fi
16
2020
03

Spring MVC的异常处理 ?

答:可以将异常抛给Spring框架,由Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可。
16
2020
03

SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?

答:是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段。
16
2020
03

SpringMVC常用的注解有哪些?

@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。
16
2020
03

SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代?

答:一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@ResponseBody + @Controller,表示是表现层,除此之外,一般不用别的注解代替。
16
2020
03

如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?

答:可以在@RequestMapping注解里面加上method=RequestMethod.GET。
16
2020
03

怎样在方法里面得到Request,或者Session?

答:直接在方法的形参中声明request,SpringMvc就自动把request对象传入。
16
2020
03

如果想在拦截的方法里面得到从前台传入的参数,怎么得到?

答:直接在形参里面声明这个参数就可以,但必须名字和传过来的参数一样。
16
2020
03

如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

答:直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面。
16
2020
03

SpringMvc中函数的返回值是什么?

答:返回值可以有很多类型,有String, ModelAndView。ModelAndView类把视图和数据都合并的一起的,但一般用String比较好。
16
2020
03

SpringMvc用什么对象从后台向前台传递数据的?

通过ModelMap对象,可以在这个对象里面调用put方法,把对象加到里面,前台就可以通过el表达式拿到。
16
2020
03

怎么样把ModelMap里面的数据放入Session里面?

答:可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key。
16
2020
03

SpringMvc里面拦截器是怎么写的:

有两种写法,一种是实现HandlerInterceptor接口,另外一种是继承适配器类,接着在接口方法当中,实现处理逻辑;然后在SpringMvc的配置文件中配置拦截器即可:  <!-- 配置SpringMvc的拦截器 --> <mvc:interceptors>     <!-- 配置一个拦截器的Bean就可以了 默认是对所有请求都拦截 -->     <bean id=&
16
2020
03

注解原理:

注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。
16
2020
03

SpringMVC 的工作原理

a. 用户向服务器发送请求,请求被 springMVC 前端控制器 DispatchServlet 捕获;b. DispatcherServle 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL 调用 HandlerMapping将请求映射到处理器 HandlerExcutionChain;c. DispatchServlet 根据获得 Handler 选择一个合适的 HandlerAdapter 适配器处理;d. Handler 对数据处理完成以后将返回一个 Mode
16
2020
03

SpringMVC 常用注解都有哪些?

@requestMapping 用于请求 url 映射。@RequestBody 注解实现接收 http 请求的 json 数据,将 json 数据转换为 java 对象。@ResponseBody 注解实现将 controller 方法返回对象转化为 json 响应给客户。
16
2020
03

如何开启注解处理器和适配器?

我们在项目中一般会在 springmvc.xml 中通过开启 mvc:annotation-driven来实现注解处理器和适配器的开启。
16
2020
03

如何解决 get 和 post 乱码问题?

解决 post 请求乱码:我们可以在 web.xml 里边配置一个 CharacterEncodingFilter 过滤器。 设置为 utf-8.解决 get 请求的乱码:有两种方法。对于 get 请求中文参数出现乱码解决方法有两个:修改 tomcat 配置文件添加编码与工程编码一致。另 外 一 种 方 法 对 参 数 进 行 重 新 编 码 String userName = NewString(Request.getParameter(“userName”).getBytes(“ISO885
16
2020
03

常见的反爬虫和应对方法?

1)通过Headers反爬虫从用户请求的Headers反爬虫是最常见的反爬虫策略。可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名。2)基于用户行为反爬虫通过检测用户行为,例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同操作。大多数网站都是前一种情况,对于这种情况,使用IP代理就可以解决。可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。有了大量代理ip后可以每请求几次更换
16
2020
03

爬虫过程中验证码怎么处理?

1)scrapy自带2)付费接口
16
2020
03

分布式爬虫主要解决什么问题?

1)ip2)带宽3)cpu4)io
16
2020
03

数据库的优化?

1)优化索引、SQL 语句、分析慢查询;2)优化硬件;采用SSD,使用磁盘队列技术(RAID0,RAID1,RDID5)等;3)采用MySQL 内部自带的表分区技术,把数据分层不同的文件,能够提高磁盘的读取效率;4)选择合适的表引擎,参数上的优化;5)进行架构级别的缓存,静态化和分布式;6)采用更快的存储方式,例如 NoSQL存储经常访问的数据
16
2020
03

写爬虫是用多进程好?还是多线程好? 为什么?

IO密集型代码(文件处理、网络爬虫等),多线程能够有效提升效率(单线程下有IO操作会进行IO等待,造成不必要的时间浪费,而开启多线程能在线程A等待时,自动切换到线程B,可以不浪费CPU的资源,从而能提升程序执行效率)。在实际的数据采集过程中,既考虑网速和响应的问题,也需要考虑自身机器的硬件情况来设置多进程或多线程。
16
2020
03

什么是关联查询,有哪些?

将多个表联合起来进行查询,主要有内连接、左连接、右连接、全连接(外连接)
16
2020
03

描述下scrapy框架运行的机制?

从start_urls里获取第一批url并发送请求,请求由引擎交给调度器入请求队列,获取完毕后,调度器将请求队列里的请求交给下载器去获取请求对应的响应资源,并将响应交给自己编写的解析方法做提取处理:1) 如果提取出需要的数据,则交给管道文件处理;2)如果提取出url,则继续执行之前的步骤(发送url请求,并由引擎将请求交给调度器入队列...),直到请求队列里没有请求,程序结束。
16
2020
03

你常用的mysql引擎有哪些?各引擎间有什么区别?

主要 MyISAM 与 InnoDB 两个引擎,其主要区别如下:1)InnoDB 支持事务,MyISAM 不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而 MyISAM就不可以了;2)MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用;3)InnoDB 支持外键,MyISAM 不支持;4)MyISAM 是默认引擎,InnoDB 需要指定;5)InnoDB 不支持 FULLTEXT 类型的索引;6)I
16
2020
03

你用过的爬虫框架或者模块有哪些?

Python自带:urllib,urllib2第 三 方:requests框 架:Scrapyurllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能。urllib2.:urllib2.urlopen可以接受一个Request对象或者url,(在接受Request对象时候,并以此可以来设置一个URL 的headers),urllib.urlopen只接收一个urlurllib 有urlencode,urllib2没有,因此总是urllib,urllib2常会一起使用的原因
16
2020
03

scrapy和scrapy-redis有什么区别?为什么选择redis数据库?

1) scrapy是一个Python爬虫框架,爬取效率极高,具有高度定制性,但是不支持分布式。而scrapy-redis一套基于redis数据库、运行在scrapy框架之上的组件,可以让scrapy支持分布式策略,Slaver端共享Master端redis数据库里的item队列、请求队列和请求指纹集合。2) 因为redis支持主从同步,而且数据都是缓存在内存中的,所以基于redis的分布式爬虫,对请求和数据的高频读取效率非常高。
16
2020
03

如何使用NumPy / SciPy制作3D绘图/可视化?

与2D绘图一样,3D图形超出了NumPy和SciPy的范围,但就像2D情况一样,存在与NumPy集成的包。Matplotlib在mplot3d子包中提供基本的3D绘图,而Mayavi使用功能强大的VTK引擎提供各种高质量的3D可视化功能。
16
2020
03

NumPy和SciPy有什么区别?

1)在理想的世界中,NumPy只包含数组数据类型和最基本的操作:索引,排序,重新整形,基本元素函数等。2)所有数字代码都将驻留在SciPy中。然而,NumPy的一个重要目标是兼容性,因此NumPy试图保留其前任任何一个支持的所有功能。3)因此,NumPy包含一些线性代数函数,即使它们更恰当地属于SciPy。无论如何,SciPy包含更多全功能的线性代数模块版本,以及许多其他数值算法。4)如果你使用python进行科学计算,你应该安装NumPy和SciPy。大多数新功能属于SciPy而非NumPy。
16
2020
03

解释装饰器的用法

Python中的装饰器用于修改或注入函数或类中的代码。使用装饰器,您可以包装类或函数方法调用,以便在执行原始代码之前或之后执行一段代码。装饰器可用于检查权限,修改或跟踪传递给方法的参数,将调用记录到特定方法等
16
2020
03

NumPy阵列在(嵌套)Python列表中提供了哪些优势?

1)Python的列表是高效的通用容器。它们支持(相当)有效的插入,删除,追加和连接,Python的列表推导使它们易于构造和操作。2)有一定的局限性它们不支持元素化加法和乘法等“向量化”操作,可以包含不同类型的对象这一事实意味着Python必须存储每个元素的类型信息,并且必须在操作时执行类型调度代码在每个元素上。3)NumPy不仅效率更高,也更方便你可以获得大量的矢量和矩阵运算,这有时可以避免不必要的工作。4)NumPy数组更快你可以使用NumPy,FFT,卷积,快速搜索,基本统计,线性代数,直
16
2020
03

如何用Python/ NumPy计算百分位数?

importnumpy as npa =np.array([1,2,3,4,5]p =np.percentile(a, 50) #Returns 50th percentile, e.g. medianprint(p)3
16
2020
03

如何在NumPy数组中获得N个最大值的索引?

我们可以使用下面的代码在NumPy数组中获得N个最大值的索引:importnumpy as nparr =np.array([1, 3, 2, 4, 5])print(arr.argsort()[-3:][::-1])4 3 1
16
2020
03

什么是Python中的map函数?

map函数执行作为第一个参数给出的函数,该函数作为第二个参数给出的iterable的所有元素。如果给定的函数接受多于1个参数,则给出了许多迭代。