SpringMVC入门
一、SpringMVC入门
1.SpringMVC的概述
1) 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。
2) Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供 了构建 Web 应用程序的全功能 MVC 模块。
3)MVC模型:
Model:数据模型,JavaBean的类,用来进行数据封装。
View:指JSP、HTML用来展示数据给用户 。
Controller:用来接收用户的请求,整个流程的控制器。用来进行数据校验等。
2.SpringMVC的优势
1) 清晰的角色划分:
前端控制器(DispatcherServlet)
请求到处理器映射(HandlerMapping)
处理器适配器(HandlerAdapter)
视图解析器(ViewResolver)
处理器或页面控制器(Controller)
验证器( Validator)
命令对象(Command 请求参数绑定到的对象就叫命令对象)
表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。
3.基本环境搭建
1).导入依赖
2)在web.xml中配置前端控制器以及读取springmvc.xml的配置还有中文乱码
<!--配置前端控制器--> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置Servlet的初始化参数,读取springmvc的配置文件,创建spring容器 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--配置解决中文乱码的过滤器--> <filter> <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3)配置springmvc.xml
<!-- 开启注解扫描 --> <context:component-scan base-package="cn.li"/> <!-- 视图解析器对象 --> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 开启SpringMVC框架注解的支持 ,自动配置了映射器和适配器--> <mvc:annotation-driven />
4.请求参数的绑定
1)获取页面传来的字符串
<a href="testParam?username=hehe&password=123">请求参数绑定</a>
@RequestMapping("/testParam") public String testParam(String username,String password){ System.out.println("执行了..."); System.out.println("用户名:"+username); System.out.println("密码:"+password); return "success"; }
2)请求参数绑定把数据封装到JavaBean的类中
@RequestMapping("/saveAccount") public String saveAccount(Account account){ System.out.println("执行了..."); System.out.println(account); return "success"; }
<form action="param/saveAccount" method="post"> 姓名:<input type="text" name="username" /><br/> 密码:<input type="text" name="password" /><br/> 金额:<input type="text" name="money" /><br/> 用户姓名:<input type="text" name="user.uname" /><br/> 用户年龄:<input type="text" name="user.age" /><br/> <input type="submit" value="提交" />
3)自定义类型转换器
将页面的字符串转化为类型date
/** * 将字符串转换为日期 */ public class StringToDateConverter implements Converter<String,Date> { /** * * @param source 传进来的字符串 * @return */ public Date convert(String source) { if(source==null){ throw new RuntimeException("请输入值"); } DateFormat df=new SimpleDateFormat("yyyy-MM-dd"); try { //字符串转换为日期 return df.parse(source); } catch (ParseException e) { throw new RuntimeException("转换失败"); } } }
<!--springmvc.xml中配置自定义类型的转换器--> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="cn.li.utils.StringToDateConverter"></bean> </set> </property> </bean> <!--参数为开启自定义类型转换器--> <mvc:annotation-driven conversion-service="conversionService"/>
4)获取原生的Servlet API
@RequestMapping("/testServlet") public String testServlet(HttpServletRequest request,HttpServletResponse response){ System.out.println("执行了..."); System.out.println(request); HttpSession session = request.getSession(); System.out.println(session); ServletContext servletContext = session.getServletContext(); System.out.println(servletContext); System.out.println(response); return "success"; }