尚硅谷springmvc总结

1、RESTful 风格web.xml 需要配置一下 中心意思就是把POST请求转为DELETE 和 PUT 时候使用

  <!-- 配置 HiddenHttpMethodFilter: 把 POST 请求转为 DELETE、PUT 请求 -->
<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>


示例DELETE. 具体在链接处理上,如下操作:

$(document).ready(function(){

$(".delete").click(function(){

var href = $(this).attr();

$("form").attr("action",href).submit();

return false;

});

});

---------------------------------------------------------------------

<form ation="" method="POST">

<input type=hidden name="_method" value="DELETE">

</form>

<a class="delete" href="aaa/bbb" > click to delete </a>



2、pojo直接作为参数,支持级联属性

可以使用Servlet原生APT作为目标方法的参数  HttpServletRequest  HttpServletResponse   HttpSession  Writer  Reader等




3、处理模型数据:

ModelAndView  两个方法 addObject  addAllObject

目标方法的参数还可以传入 Map 和 Model类型

还可以将返回值放入session中,例如在类上面添加 @SessionAttributes(value={"user"},types={String.class})  则表示有key为user的session 另外有表明字符串类型的数据也要放入session 所以如果方法中有类似 map.put("school","bit"); 则也会有school的session 



4、@ModelAttribute

貌似是jsp页面用<form:form标签时候,必须有个属性是 modelattribue="实体" 否则会报错

<input type="hidden" name="_method" value="PUT"/>
<%-- 对于 _method 不能使用 form:hidden 标签, 因为 modelAttribute 对应的 bean 中没有 _method 这个属性 --%>
<%-- 
<form:hidden path="_method" value="PUT"/>
--%>



5、自定义类型转换器的步骤,以将提交的字符串数据格式是 lastName-email-gender-department 转化成 Employee对象 为例

1)首先继承接口Converter自定义EmployeeConverter

@Component
public class EmployeeConverter implements Converter<String, Employee> {
@Override
public Employee convert(String source) {
if(source != null){
String [] vals = source.split("-");
//GG-gg@atguigu.com-0-105
if(vals != null && vals.length == 4){
String lastName = vals[0];
String email = vals[1];
Integer gender = Integer.parseInt(vals[2]);
Department department = new Department();
department.setId(Integer.parseInt(vals[3]));

Employee employee = new Employee(null, lastName, email, gender, department);
System.out.println(source + "--convert--" + employee);
return employee;
}
}
return null;
}
}


2)springmvc.xml配置文件中做如下配置

<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

<!-- 配置 ConversionService -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">  // 这里原来是 ConversionServiceFactoryBean 为了和格式化相匹配 换成这个      FormattingConversionServiceFactoryBean 这个类既可以进行类型转换 又可以进行格式化
<property name="converters">
<set>
<ref bean="employeeConverter"/>
</set>
</property>
</bean>

即可


6、自定义视图流程

1)继承View接口自定义视图类CustomView

@Component
public class CustomView implements View{
@Override
public String getContentType() {
// TODO Auto-generated method stub
return "text/html";
}
@Override
public void render(Map<String, ?> arg0, HttpServletRequest request,HttpServletResponse response) throws Exception {
response.getWriter().print("hello,this is the custom view,and the time is:"+new Date());
}
}

2)springmvc.xml配置文件中,做如下视图路径配置

      <!-- 配置自定义视图解析 优先级数字越小越先调用-->
      <bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
      <property name="order" value="100"></property>   
      </bean>

3) 在目标方法中,返回自定义视图类实例customView即可


7、<mvc:view-controller path="/success" view-name="success"/> 在配置文件中配置这个mvc view controller 标签,可以直接跳转,而不经过handler处理。但是要注意,必须附带配上

<mvc:annotation-driven ></mvc:annotation-driven>这个标签,才不至于让其他的失效。


8、处理静态资源的解决方法

      <!-- 处理静态资源问题 -->
<mvc:default-servlet-handler/>

<mvc:annotation-driven ></mvc:annotation-driven>

配这两个。当然还有自己以前的掌握的方法  <mvc:resources location="/test/" mapping="/test/**"/>  两个方法可以比较下


9、数据格式化

@DateTimeFormat(pattern="yyyy-MM-dd")

@NumberFormat(pattern="###,###.##")

放置在实体类的相关属性上面即可。


10、输出错误


11、数据校验


12、配置国际化资源文件

<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="i18n"></property>
</bean>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值