开发步骤:
1、在 web.xml 中配置 DispatcherServlet
(通过alt+/ 使用dispatcherservlet)
DispatcherServlet 默认加载 /WEB- INF/<servletName-servlet>.xml 的 Spring 配置文件
2、在<servletName-servlet>.xml中配置自动扫描的包(base-package)
<context:component-scan base-package="com.ysu.controller"></context:component-scan>
3、在<servletName-servlet>.xml中配置视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
转发的页面为 prefix前缀+返回值+suffix
4、控制器类加上@Controller注解
@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器
5、@RequestMapping括号里指定请求url的请求路径
①value代表的就是请求路径
Ant 风格资源地址
(1)?:匹配文件名中的一个字符
(2)*:匹配文件名中的任意多个任意字符[0个字符除外!]
(3)**:** 匹配多层路径
②params代表携带参数,为一个数组params={}
③Method代表是哪种请求操作:method=RequestMethod.xxx
6、@PathVariable映射 URL 绑定的占位符
假设@RequestMapping中的value指定的路径携带占位符参数value="/order/{id}",则@PathVariable中的value值要一致;
7、REST(Representational State Transfer) 如何使用put和delete请求?
1.在web.xml文件中配置
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.在表单域中需要携带一个name值为_method,value值为put或者delete的参数
<form action="${pageContext.request.contextPath }/order/1" method="post">
<input type="hidden" name="_method" value="put"/>
<input type="submit" value="Submit"/>
</form>
8、@RequestParam可以接收请求的参数,相当于Servlet的getParameter()方法!
注意:要把@RequestParam和@PathVariable区分开:
三个默认属性:
value:这个字段要与请求参数的name属性值一致!
required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带!
defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值!0
9、@RequestHeader:获取请求头信息,默认属性:同上
10、POST请求乱码的处理
在web.xml文件中加上CharacterEncodingFilter
<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>