前缀+逻辑视图名+后缀,逻辑视图名需要在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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
总结
蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的。
经历这次面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。
入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-FRxjX6yq-1711995932461)]
总结
蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的。
经历这次面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。
[外链图片转存中…(img-pXwoS25Y-1711995932461)]