jsp和java工作中经验总结

  • 1 sping mvc的ModelAndView直接跳转到指定url不经过转换器转换
  • 2 js代码里取里定义的变量方法
  • 3 在jsp里标签里读取用modelAndView传递的数据
  • 4Vuejs 动态绑定class
  • 5RequestBody使用要点
  • 6SpringMVC 之conversionSerivce

1、 sping mvc的ModelAndView直接跳转到指定url,不经过转换器转换。

正常我们使用ModelAndView是这样的:

mView.setViewName(url);

这个url是相对路径,它的路径是根据springmvc配置文件dispatcher-servlet.xml来配置来决定的:

id="jspViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/page/" />
        <property name="suffix" value=".jsp" />
        <property name="order" value="0">property>
    

现在我们想直接跳转到指定url,不经过路径映射转换,如下

String url = "www.baidu.com";
ModelAndView mView = new ModelAndView(new RedirectView(url));

2、 js代码里取<%%>里定义的变量方法

比如jsp里

<%
String name = "cy";
或者String name = (String)request.getSession().getAttribute("name");

%>

在js里取name值方法如下:

"<%=name%>"

3、 在jsp里<%%>标签里读取用modelAndView传递的数据

首先,传递数据必需写在ModelMap里,比如有个modelAndView对象名是mView,则

mView.getModelMap().addAttribute("openId", openId);

jsp里用java取数据方式如下:

<%
String openId = (String)request.getAttribute("openId");
%>

如果用js取传递的数据,则数据添加如下:

mView.addObject("openId", openId)

jsp的js取数据方式如下:

${openId}

4、Vue.js 动态绑定class

v-bind结合三目运算符

<a rel="#a" :class="index==0?'f-active':''">{{item.nmCn}}a>

5、@RequestBody使用要点

1.若是ajax请求,必需指定数据类型是:“application/json”
2.数据数据是json类型的字符串,字符是字符串
3.必需是POST请求
4.在接收的方法里使用@RequestBody标识类,如下:

@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public Object updateAddrInfo(@RequestBody TestRo testRo) {

}

6、SpringMVC 之conversionSerivce

ConversionSerivce的作用是把http的请求参数以什么形式进行类型转换,即传递的参数转换成我们想要的参数,当然这是一种额外的使用方法,平时可能不常使用。
比如delphi语言不直接日期里的空格,中间可能会加上“T”来代替空格,但java是不能识别的,故需要我们在传递参数时就把它转换成我们想要的格式。
定义一个TimestampConverter.java:

package yui.ui.web.convert;

import java.sql.Timestamp;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;
import org.springframework.core.convert.converter.Converter;

import yui.comn.util.DateUtils;

public class TimestampConverter implements Converter {
    @Override
    public Timestamp convert(String timeStr) {
        Timestamp t = null;
        timeStr = timeStr.replace("T", " ");
        if (StringUtils.isNotBlank(timeStr)) {
            try {
                t = DateUtils.covertStrToTimestamp(timeStr, "yyyy-MM-dd HH:mm:ss");
            } catch (Exception e) {
                t = new Timestamp(new Date().getTime());
                e.printStackTrace();
            }
        }
        return t;
    }

}

dispatcherServlet.xml里配置如下:

<mvc:annotation-driven conversion-service="conversionService">
          
        <mvc:message-converters register-defaults="true">  
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">  
                 <property name="supportedMediaTypes">    
                    <list>    
                        <value>text/plain;charset=UTF-8value>    
                        <value>text/html;charset=UTF-8value>    
                    list>    
                property>    
            bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  
                <property name="objectMapper">  
                    <bean class="com.fasterxml.jackson.databind.ObjectMapper">  
                        <property name="dateFormat">  
                            <bean class="java.text.SimpleDateFormat">
                                <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />  
                            bean>  
                        property>  
                    bean>  
                property> 
            bean>    
        mvc:message-converters>  
    mvc:annotation-driven>
     <bean id="conversionService"
           class="org.springframework.context.support.ConversionServiceFactoryBean">
       <property name="converters">
           <list>
               <bean class="yui.ui.web.convert.TimestampConverter">bean>
           list>
       property>
    bean>

你可能感兴趣的:(经验,SpringMVC,jsp)