SSM之SpringMVC_02_03_SpringMVC-命令控制器讲解、解决乱码问题(分post和get请求、还有控制台乱码)、日期类型转换

系列文章目录

SpringMVC-命令控制器讲解

Springmvc通过命令设计模式接收页面参数
添加jsp页面

<form action="${pageContext.request.contextPath}/command.do" method="post">
    用户名:<input type="text" name="username"><br>
    密码:<input type="text" name="password"><br>
    性别:<input type="text" name="gender"><br>
    生日:<input type="text" name="birthday"><br>
    <input type="submit">
</form>

在这里插入图片描述
在这里插入图片描述
根据我们现有的知识
我们会这么做
在这里插入图片描述
这个用户添加的控制器跟UserController类似
在这里插入图片描述
然后还需要在 DispatcherServlet-servlet 里面动一下“刀”
在这里插入图片描述
启动项目,访问一下我们配置的路径
在这里插入图片描述
那么现在我们就有一个疑问了,我们前面的jsp页面,这是啥?
在这里插入图片描述
我们提交一下,那不爽死了吗,提交一下看看,不出意外的爽死了
在这里插入图片描述
我们想一想我们想要的是什么
我们最终会把它们封装到一个模型里面去
在这里插入图片描述
我们新建一个包
在这里插入图片描述
写个模型,把我们需要的属性 写上,记得要提供get/set 和toString方法

在这里插入图片描述
模型写好之后
我们就要考虑,怎么跟表单所提交的 /command.do相关联
注意,这个 command 就是命令控制器
在这里插入图片描述
先这样写
在这里插入图片描述
新建有一个info.jsp
在这里插入图片描述

再继续往下
在这里插入图片描述
其实也可以用set赋值
这样
在这里插入图片描述
这样 CommandController类就写完了
再在 info.jsp里面加点东西

在这里插入图片描述
然后这样就可以运行了吗
千万要记住,新手很容易犯一个错
就是 DispatcherServlet-servlet.xml 忘记配置
我们还要在 DispatcherServlet-servlet.xml 里面配置一下
在这里插入图片描述

其实我们在这里配置控制器 就相当于我们在struts里面配置action一样
这样就很好理解了

然后我们运行一下看看,这样就是告诉我们怎么接收参数以及底层原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
乱码后面说,反正这样就是能接收到参数的
就行了

回顾

Command控制器
在这里插入图片描述
Info.jsp

在这里插入图片描述
views结构

DispatchServelt-sevlet配置文件
在这里插入图片描述
这个怎么解释呢
往下看

BeanNameUrlHandlerMapping和ControllerClassNameHandlerMapping的区别

在这里插入图片描述
但是如果不配置name,而配置根据类名来找控制器
(即使用 ControllerClassNameHandlerMapping来进行操作)在这里插入图片描述
这样就可以不加斜杆
在这里插入图片描述

乱码问题的解决

首先我们看提交方法 是post 方法
在这里插入图片描述
我们需要配置一下,就不会有乱码了
需要注意的是 有post请求、和get 请求解决乱码之分

POST请求乱码

<!-- 配置编码过滤器  -->
  	<filter>
  		<filter-name>EncodingFilter</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>EncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

复制一下粘贴到web.xml就行了
在这里插入图片描述
重启服务看看,是否中文没有乱码了
在这里插入图片描述
在这里插入图片描述
但是我们发现控制台显示是乱码,这个怎么解决呢
在这里插入图片描述
1.修改idea安装目录下的两个文件

C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.4\bin\idea.exe.vmoptions

C:\Program Files\JetBrains\IntelliJ IDEA 2017.1.4\bin\idea64.exe.vmoptions

在这两个文件下增加一行:

-Dfile.encoding=UTF-8

在这里插入图片描述
在这里插入图片描述

2.做此修改后,tomcat运行日志会打印中文乱码

所以在还需要在VM options选项中配置:
在这里插入图片描述

在这里插入图片描述

注意改完之后,需要重启idea,然后就好了
在这里插入图片描述
另外需要注意,配置这个只是修改jsp不用刷新
在这里插入图片描述

GET请求乱码【后续完善】

Tomcat8 默认进行了url编码,get请求不乱码,Tomcat7会乱码
在这里插入图片描述
在这里插入图片描述

总结

实际开发中,包括前面几篇文章和这篇文章的知识我们都不会用,但是这些是底层原理,底层就是这样做的
实际上,了解底层原理之后,对我们深入学习是很有帮助的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来回答你的问题。 首先,你需要创建一个登录页面,让用户输入用户名和密码。然后,创建一个控制器类,用于处理用户的登录请求。 在控制器类中,你需要使用 Spring MVC 框架提供的注解来标识该类和方法的作用。比如,使用 @Controller 注解标识该类为控制器类,使用 @RequestMapping 注解标识该方法为处理登录请求的方法。 在处理登录请求的方法中,你需要获取用户输入的用户名和密码,并进行验证。如果用户名和密码正确,则将用户信息存储到 session 中,并跳转到登录成功页面。如果用户名或密码错误,则返回错误信息给用户,并重新跳转到登录页面。 下面是一个简单的示例代码: ```java @Controller public class LoginController { @Autowired private UserService userService; @RequestMapping(value = "/login", method = RequestMethod.POST) public String login(@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session, Model model) { User user = userService.getUserByUsernameAndPassword(username, password); if (user != null) { session.setAttribute("user", user); return "redirect:/success"; } else { model.addAttribute("error", "用户名或密码错误"); return "redirect:/login"; } } @RequestMapping(value = "/login", method = RequestMethod.GET) public String login() { return "login"; } @RequestMapping(value = "/success", method = RequestMethod.GET) public String success() { return "success"; } } ``` 在这个示例中,我们使用了 @Autowired 注解来注入 UserService 类,该类用于处理用户的业务逻辑。 在 login() 方法中,我们使用 @RequestMapping 注解来标识该方法为处理登录请求的方法,并使用 @RequestParam 注解来获取用户输入的用户名和密码。然后,我们调用 UserService 类的 getUserByUsernameAndPassword() 方法来验证用户名和密码是否正确。如果验证通过,则将用户对象存储到 session 中,并跳转到登录成功页面。如果验证不通过,则将错误信息存储到 Model 中,并重新跳转到登录页面。 在 success() 方法中,我们使用 @RequestMapping 注解来标识该方法为处理登录成功页面的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值