wap jsp 开发

阅读更多
wap 学习-3 jsp中使用wml 

2010-05-03 16:44:15|  分类: WAP |字号 订阅
wml有两个版本;1.0,2.0

1.0 在JSP中,使用如下

<%@page contentType="text/vnd.wap.wml; charset=gb2312"%>

或者
<%@page contentType="text/vnd.wap.wml; charset=gb2312"%> //这里不能换行

否则,使用Opera浏览器浏览无法按wml进行解析浏览

wml的content-type为:text/vnd.wap.wml
mime类型:application/vnd.wap.wml

或者在web.xml中进行全局设置:
public class SetContentTypeFilter implements Filter {
private String contentType;
private String encoding;
public void init(FilterConfig filterConfig) throws ServletException {
contentType = filterConfig.getInitParameter("contentType");
encoding = filterConfig.getInitParameter("encoding");
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;

httpServletRequest.setCharacterEncoding(encoding);
httpServletResponse.setContentType(contentType);
httpServletResponse.setCharacterEncoding(encoding);

chain.doFilter(httpServletRequest, httpServletResponse);
}
public void destroy() {
}
}
web.xml

encodingFilter
com.infowarelab.wap.filter.SetContentTypeFilter

encoding
UTF-8


contentType
text/vnd.wap.wml



encodingFilter
/*

注:若使用了struts2+freemarker,必须设置freemarker result-type 的 content-type="text/vnd.wap.wml",否则freemarker默认会使用text/html,即使设置了过滤器也无效

2.0 在JSP中,使用如下









我的网易




一个web应用同时使用1.0,2.0
使用不同的前缀(如/v1,/v2)来区分两个版本的访问,然后使用过滤器对每个版本统一处理
   
        encodingFilter
        com.infowarelab.wap.filter.SetCharacterEncodingFilter
       
            encoding
            UTF-8
       

   

   
        contentTypeFilter
        com.infowarelab.wap.filter.SetContentTypeFilter
       
            contentType
            text/vnd.wap.wml
       

   

   
        encodingFilter
        /*  //v1,v2都需要进行编码设置
   

   
        contentTypeFilter
        /v1/*  //只有v1需要修改content type设置
   

你可能感兴趣的:(wap,struts,mobile)