javaweb项目开发案例(java项目开发案例经典)

   2023-02-22 互联网0
核心提示:spring.messages.basename=i18n.login 这样就相当于把国际化资源文件让SpringBoot配置的ResourceBundleMessageSource管理了起来 2021新版IDEA修改全部默认配置中的文件编

javaweb项目开发案例(java项目开发案例经典)

spring.messages.basename=i18n.login

这样就相当于把国际化资源文件让SpringBoot配置的ResourceBundleMessageSource管理了起来 2021新版IDEA修改全部默认配置中的文件编码模式,解决properties配置文件乱码问题

通过以上设置,我们根据浏览器语言的设置切换国际化,下面展示原理:

SpringMVC的自动配置中有默认的区域信息解析器===>国际化Locale(区域信息对象),LocaleResolver(获取区域信息对象) 点击链接实现国际化切换 1.编写自己的区域信息解析器,并放到容器中

自定义区域信息解析器:

public class MyLocaleResolver implements LocaleResolver

{

@Override

public Locale resolveLocale(HttpServletRequest Request) {

String l=Request.getParameter(“l”);

Locale locale=Locale.getDefault();//Locale.getDefault()获取当前的语言环境—操作系统的语言环境

if(!StringUtils.isEmpty(l))

{

String[] s = l.split(“_”);

locale=new Locale(s[0],s[1]);//第一个参数是国家,第二个参数是语言

}

return locale;

}

@Override

public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {

}

}

SpringMVC扩展类: 负责将自定义的组件加入到容器中

//使用WebMvcConfigurerAdapter可以来扩展SpringMvc的功能

@Configuration

public class myConfig extends WebMvcConfigurerAdapter

{

//所有的WebMvcConfigurerAdapter组件都会一起起作用

@Bean//将容器注册在容器中

public WebMvcConfigurerAdapter addViewControllers()

{

WebMvcConfigurerAdapter adapter=new WebMvcConfigurerAdapter() {

@Override

public void addViewControllers(ViewControllerRegistry registry) {

registry.addViewController(“/”).setViewName(“index”);

registry.addViewController(“/index.html”).setViewName(“index”);

}

};

return adapter;

}

@Bean

//在SpringMVC扩展类中,将刚才写的区域信息解析器放到容器中

public LocaleResolver localeResolver()

{

return new MyLocaleResolver();

}

}

效果展示:

登录模块

===================================================================

SpringMVC新特性支持的Rest风格的注解

@RestController注解

@RestController等常见注解

@PostMapping, @GetMapping, @PutMapping, @DeleteMapping四个支持Rest风格的注解 模板引擎页面修改后要时时生效==>禁用掉模板引擎的缓存+重新编译 在全局配置文件中禁用掉模板引擎的缓存

#禁用掉模板引擎的缓存,这样页面内容一修改,就可以看到修改后的效果

spring.thymeleaf.cache=false

IDEA在项目运行期间,不会让我们对页面的修改生效,如果想让我们对页面的修改时时生效,第一步禁用缓存,第二步按住ctrl+f9重新编译当前页面

Thymeleaf 内置对象和内置方法

Thymeleaf 内置对象和内置方法

转发到某一页面导致的表单重复提交问题

解决表单重复提交问题

登录成功后,要防止表单被重复提交,可以重定向到主页

拦截器进行登录检查,防止不经过登录直接来到某一页面 SpringBoot已经做好了静态资源的映射 1.自定义登录拦截器,通过获取session中存放的数据,来判断是否已经登录过

public class LoginHanlderIntercept implements HandlerInterceptor

{

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

Object user=request.getSession().getAttribute(“loginUser”);

if(user==null)

{

//未登陆,返回登陆页面

request.setAttribute(“msg”,“没有权限请先登陆”);

request.getRequestDispatcher(“/index.html”).forward(request,response);

return false;

}

else

{

//已登陆,放行请求

return true;

}

}

@Override

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

}

@Override

public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

//登陆后,将之前存储在session里面的登录凭证销毁,无论是否存在凭证,都执行销毁操作

request.getSession().removeAttribute(“loginUser”);

}

}

2.如果登录成功,那么往session中存放一个username作为登录凭证

@Controller

public class LoginController

{

@PostMapping(“/user/login”)

public String Login(@RequestParam(“username”)String username,

@RequestParam(“password”)String password

, Map map, HttpSession session)

{

if(username.equals(“大忽悠”)&&“123456”.equals(password))

{

session.setAttribute(“loginUser”,username);

//登录成功

return “redirect:/main.html”;

}

//登录失败

map.put(“msg”,“用户名或密码错误”);

return “index”;

}

}

3.在springmvc扩展类中将自定义的拦截器进行注册

//使用WebMvcConfigurerAdapter可以来扩展SpringMvc的功能

@Configuration

public class myConfig extends WebMvcConfigurerAdapter

{

//所有的WebMvcConfigurerAdapter组件都会一起起作用

@Bean//将容器注册在容器中

public WebMvcConfigurerAdapter addViewControllers()

{

WebMvcConfigurerAdapter adapter=new WebMvcConfigurerAdapter() {

@Override

public void addViewControllers(ViewControllerRegistry registry) {

registry.addViewController(“/”).setViewName(“index”);

registry.addViewController(“/index.html”).setViewName(“index”);

registry.addViewController(“/main.html”).setViewName(“success”);

}

@Override

public void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(new LoginHanlderIntercept()).addPathPatterns(“

@RequestMapping(“handle01”)

public String handle01(){

System.out.println(“handle01…”);

return “forward:/hello.jsp”;

}

@RequestMapping(“handle02”)

public String handle02(){

System.out.println(“handle02…”);

return “forward:/handle01”;

}

@RequestMapping(“handle03”)

public String handle03(){

System.out.println(“handle03…”);

return “redirect:/hello.jsp”;

}

@RequestMapping(“handle04”)

public String handle04(){

System.out.println(“handle04…”);

return “redirect:/handle03”;

}

}

SprinBoot中的日期格式化问题

SpringBoot底层日期格式化原理: 默认有一个日期格式化器:

![在这里插入图片描述](
https://img-blog.csdnimg.cn/de16e8c47d51400989e3c05bd813b6ae.wf?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》 【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,color_FFFFFF,t_70)

默认使用的日期格式是/方式,如果后台接收到前台的日期格式不是,那么就会报错: 我们可以在配置文件中进行日期格式修改,替换默认的日期格式:

spring.mvc.date-format=yyyy-MM-dd

Thymeleaf 日期格式化处理

${#dates.format(key)}

${#dates.format(key, ‘yyyy-MM-dd HH:mm:ss’)}

格式化传递过来的 Date 对象,如果没有指定时间格式,将使用浏览器当前使用的时间格式

Thymeleaf 日期格式化处理

JQuery中的submit事件来提交表单,也可以阻止表单的提交
 
标签: 案例 项目 容器
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与爱美生活网(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 高考监考员组织作弊被判刑_最高法典型案例:高考监考老师组织作弊获利30余万元 获刑四年
    高考监考员组织作弊被判刑_最高法典型案例:高
    今天给各位分享高考监考员组织作弊被判刑_最高法典型案例:高考监考老师组织作弊获利30余万元 获刑四年,其中也会对大家所疑惑的内容进行解释,如果能解决您现在面临的问题,别忘了关注站哦,现在开始吧!最高法典型案例:高考监考老师组织作弊获利30余
  • 狗扑人、狗咬猫、猴咬人……北京法院通报多个宠物纠纷案例
    狗扑人、狗咬猫、猴咬人……北京法院通报多个宠
    据报道,5月23日上午北京三中院举行了新闻发布会,公布多起涉及宠物纠纷的典型案例。而在近三年来,该院审结的宠物相关纠纷案件就超过40起。其中多起案例是因宠物饲养人未严格遵守管理规定而引发,包括犬只逃逸伤人、未拴绳遛狗导致的“狗扑人”、“狗咬
  • 以“领养”为名出售宠物仍应担责任!四川省法院发布消费者权益保护十大典型案例
    以“领养”为名出售宠物仍应担责任!四川省法院
    3月15日,四川省在“保护消费权益 激发消费活力”新闻通报会上,省高级人民法院正式发布了关于消费者权益保护的十大典型案例,这些案例涵盖了网上虚假房源引流、宠物经济、网络咨询、预付式消费、网上投保、安全保障义务以及个人信息保护等多个热点问题。
  • 最高人民法院发布的宠物伤害责任案例,有何意义?
    最高人民法院发布的宠物伤害责任案例,有何意义
    近日,有人提出文明养宠不应仅仅是一种观念,更应体现为一种经济成本。针对此观点,国家最高人民法院近期举办的饲养动物损害责任典型案例新闻发布会为我们提供了深入的思考空间。据悉,发布会上有六个典型案例被公布,此举也旨在引导铲屎官增强社会责任感和法
  • 湖南一案例拟入选2023全国旅游公共服务优秀案例
    近日,文化和旅游部发布了2023全国旅游公共服务优秀案例公示名单,湖南省《开启“旅游速裁法庭”,速解旅游涉事纠纷——张家界市永定区人民法院旅游在线速裁新模式》案例入选。  近年来,张家界市永定区人民法院旅游速裁法庭以高效快捷解决涉旅纠纷为目
    12-30
  • 来沪男子偷完东西慌了 叫闪送送还赃物算盗窃罪吗
    来沪男子偷完东西慌了 叫闪送送还赃物算盗窃罪
    算盗窃罪。最近上海有一名务工人员在锂电池维修店里面维修电池时,发现店主不在店里,于是他突生邪念,偷了店里的一块电池,打算给自己的电瓶车换一块更好的电池。犯罪嫌疑人周某趁着这一时机,取了一块电池放到自己的电瓶车上,随后把车骑走。店主出来以后,
  • 深圳“湾区海上游”项目获评全国第一批交旅融合
    近日,广东深圳“湾区海上游”项目成功入选由文化和旅游部、交通运输部、国家铁路局等6家单位共同遴选的第一批交通运输与旅游融合发展典型案例。  2017年9月,“海上看深圳”项目暨深圳首个海上游船旅游项目正式运营。随着中国首艘综合性高端湾区游轮
    10-29
  • 股票分红对投资回报有多大影响 实际案例分析
    股票分红对投资回报有多大影响 实际案例分析
    对于投资者而言,股票分红政策可以增加现金流,提高投资回报率,然而,投资者需要注意公司的利润稳定性和成长潜力,以确保分红政策对长期回报的积极影响。股票分红是公司向股东支付利润的一种形式,它对投资回报率有着重要影响。在本文中,我们将通过分析实际
  • 如何避免投资陷阱 学习这些案例提高您的投资警觉性
    如何避免投资陷阱 学习这些案例提高您的投资警
    通过了解历史案例、分析失败案例、借鉴成功案例以及建立自己的投资规则,我们可以避免陷入投资陷阱,提高投资的成功率。投资是一门风险与回报并存的游戏,而投资陷阱往往让人无法预料地损失惨重。为了避免陷入这些陷阱,学习案例是提高投资者的警觉性的有效途
  • 13岁女孩被骗走30多万
    13岁女孩被骗走30多万
    最近,在网上有一个13岁的小女孩被骗走了30多万。这件事情被发到网上之后,引发了众多网友的关注,具体的事情是这样。这位13岁的女孩收到了一条私信,私信上门表示让小女孩扫码进群,给自己喜欢的明星打call,这个小女孩进群之后,发现群里面有一个
点击排行