jsp和java工作中经验总结<一>

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

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

mView.setViewName(url);

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

<bean 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>
    </bean>

现在我们想直接跳转到指定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<String, Timestamp> {
    @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">
        <!--     解决返回String时乱码-->  
        <mvc:message-converters register-defaults="true">  
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">  
                 <property name="supportedMediaTypes">    
                    <list>    
                        <value>text/plain;charset=UTF-8</value>    
                        <value>text/html;charset=UTF-8</value>    
                    </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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值