SpringMVC核心技术,北京Java面试常问

前缀+逻辑视图名+后缀,逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为hello,则最终返回的jsp视图地址 “WEB-INF/jsp/hello.jsp”

设置静态资源放行(视情况配置):

<mvc:resources location=“/js/“mapping=”/js/**”/>

总结:

springMVC.xml 一般会配:

组件扫描器

注解映射器(注解驱动)

视图解析器

可能会配静态资源放行

必配:

在web.xml中配置: 在web.xml中添加DispatcherServlet的配置。

在springmvc.xml中配置注解扫描

Controller类上配@controller注解

Controller方法上配@RequesMapping并写参数

自定义转换器

需要编写一个类实现Converter接口

在springMvc.xml中配置自定义转换器

在springMvc.xml中将自定义转换器配置到注解驱动上

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

importorg.springframework.core.convert.converter.Converter;

publicclass DateConverterimplementsConverter<String,Date> {

@Override

public Date convert(Stringsource) {

SimpleDateFormatsimpleDateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

try {

return simpleDateFormat.parse(source);

}catch (ParseExceptione) {

e.printStackTrace();

}

retur nnull;

}

}

Converter<String, Date> string指原始类型,date指转回后的类型

转换器配置:

注意: 一定要将自定义的转换器配置到注解驱动上:

mvc:annotation-drivenconversion-service\=_“conversionService”_/

底层是set集合可以配置多个自定义zhuanhuanqi;

因为自定义转换器属于springMVC所以在springMVC.xml中配置

@RequestMapping


1)      通过RequestMapping注解可以定义不同的处理器映射规则。

URL路径映射

@RequestMapping(value=“/item”)或@RequestMapping("/item)

value的值是数组,可以将多个url映射到同一个方法

2)      窄化请求映射

在class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头,通过此方法对url进行分类管理。

如下:

@RequestMapping放在类名上边,设置请求前缀: @RequestMapping(“/item”)

方法名上边设置请求映射url:

@RequestMapping放方法上:@RequestMapping(“/queryItem”)

访问地址为:/item/queryItem

请求方法限定 (一般不用)

限定GET方法

@RequestMapping(method = RequestMethod.GET)

限定POST方法

@RequestMapping(method = RequestMethod.POST)

GET和POST都可以

@RequestMapping(method={RequestMethod.GET,RequestMethod.POST})

注意 value属性和method属性可以同时存在

请求转发&重定向


1)      返回ModelAndView

controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view。

2)      返回string

返回的string字符串和  modelAndView 中指定的view一样,返回的是页面的url

重定向: 在返回的字符串前加  redirect:

请求转发: 在返回的字符串前加:  forward:

3)      返回void

(使用原生的response和request;破坏了springMVC的结构不建议使用)

重定向: response.sendRedirect(“url”)

请求转发: request.getRequestDispatcher(“页面路径”).forward(request,response);

注意:请求转发&重定向都可以使用model传递参数;model底层是加强的request

补充:

默认使用转发

相对路径: 相对于当前目录,也就是在当前类的目录下,这时候可以使用相对路径跳转

绝对路径: 从项目名后开始.

在springMvc中不管是forward还是redirect后面凡是以/开头的为绝对路径,不以/开头的为相对路径

例如:forward:/items/itemEdit.action为绝对路径

forward:itemEdit.action为相对路径

一般使用绝对路径

Restful 支持


就是对url的命名标准,要求url中只有能名词,没有动词(不严格要求),但是要求url中不能用问号?传参

传参数:

页面: p a g e C o n t e x t . r e q u e s t . c o n t e x t P a t h / i t e m s / i t e m E d i t / {pageContext.request.contextPath}/items/itemEdit/ pageContext.request.contextPath/items/itemEdit/{item.id}

方法: @RequestMapping(“/itemEdit/{id}”)

方法: @PathVariable(“id”) Integeridd

Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格,是对http协议的诠释。

资源定位:互联网所有的事物都是资源,要求url中没有动词,只有名词。没有参数

Url格式:http://blog.csdn.net/beat_the_world/article/details/45621673

资源操作:使用put、delete、post、get,使用不同方法对资源进行操作。分别对应添加、删除、修改、查询。一般使用时还是post和get。Put和Delete几乎不使用。

URL不显示 ?, .action 等

@RequestMapping(“/viewItems/{id}”)

public viewItems(@PathVariable(“id”) String id,Model model) throws Exception{

//方法中使用@PathVariable获取useried的值,使用model传回页面

//调用 service查询商品信息

ItemsCustom itemsCustom = itemsService.findItemsById(id);

return itemsCustom;

}

如果RequestMapping中表示为"/viewItems/{id}",id和形参名称一致,@PathVariable不用指定名称。

也就是将URL中的数据按照一定的格式提取其中的数据

自定义拦截器


作用:拦截请求,一般做登录权限验证时用的比较多

1)需要编写自定义拦截器类,实现HandlerInterceptor接口

public class Interceptor implements HandlerInterceptor {

//执行时机:controller已经执行,modelAndview已经返回

//使用场景:记录操作日志,记录登录用户的ip,时间等.

@Override

public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)

throws Exception {

}

//执行时机:Controller方法已经执行,ModelAndView没有返回

//使用场景:可以在此方法中设置全局的数据处理业务

@Override

public void postHandle(HttpServletRequest arg0, HttpServletResponsearg1, Object arg2, ModelAndViewarg3)

throws Exception {

}

//返回布尔值:如果返回true放行,返回false则被拦截住

//执行时机:controller方法执行前

//使用场景:权限验证

@Override

public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {

return true;

}

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的。


经历这次面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

蚂蚁金服5面,总结了49个面试题,遇到的面试官都是P7级别以上

入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-FRxjX6yq-1711995932461)]

总结

蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的。


经历这次面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

[外链图片转存中…(img-pXwoS25Y-1711995932461)]

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值