• 关于

    中文字符串截取

    的搜索结果

回答

一、中文截取:mb_substr()mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encoding,网页编码,如utf-8,GB2312,GBK 实例:<?php $str='云栖社区:http://www.jb51.net'; echo mb_substr($str,0,4,'utf-8');//截取头5个字,假定此代码所在php文件的编码为utf-8 ?> 结果显示:云栖社区 二、获取中文长度:mb_strlen()mb_strlen( $str, $encoding ) $str,要计算长度的字符串 $encoding,网页编码,如utf-8,GB2312,GBK 实例:<?php $str='脚本之家:http://www.jb51.net'; echo mb_strlen($str,'utf-8');//假定此代码所在php文件的编码为utf-8 ?> 结果显示:24
小旋风柴进 2019-12-02 02:01:24 0 浏览量 回答数 0

回答

关于字数没人知道多长也还是有个长度的,你仍然要对这个长度做出一个评估,并且选取一个合适的类型post的尺寸受到多个地方的限制,你的web服务器(nginx或者apache),你的php.ini的配置,甚至还有web服务器和php执行超时时间这两个的限制(因为数据量如果太大的话,传输时间也需要相应增加,很可能会在没有传输完之前就超时了)是的你可以把所有限制都去掉,或者改的很大很大很大很大,然后一个post提交你的服务器内存就直接被炸了(比如post一个10G的数据)关于字符串截取PHP当然可以截取字符串,不过如果你要处理中文,建议使用mb_开头系列的函数,比如mb_strcut,mb_strlen等等等,避免出现截断半个字的问题并且分隔也可以很方便的处理,只要你定义好自己的特殊分隔符,你可以看explode函数但如果你真的是想几十万字的书本级别的文字存储起来的话,你应该考虑分章节存储。
蛮大人123 2019-12-02 01:43:38 0 浏览量 回答数 0

回答

1、char(n)类型     char类型时定长的类型,即当定义的是char(10),输入的是"abc"这三个字符时,它们占的空间一样是10个字节,包括7个空字节。当输入的字符长度超过指定的数时,char会截取超出的字符。而且,当存储char值时,MySQL是自动删除输入字符串末尾的空格。     char是适合存储很短的、一般固定长度的字符串。例如,char非常适合存储密码的MD5值,因为这是一个定长的值。对于非常短的列,char比varchar在存储空间上也更有效率。 2、varchar(n)类型      varchar(n)类型用于存储可变长的,长度为n个字节的可变长度且非Unicode的字符数据。n必须是介于1和8000之间的数值,存储大小为输入数据的字节的实际长度+1/2. 比如varchar(10), 然后输入abc三个字符,那么实际存储大小为3个字节。除此之外,varchar还需要使用1或2个额外字节记录字符串的长度,如果列的最大长度小于等于255字节(是定义的最长长度,不是实际长度),则使用1个字节表示长度,否则使用2个字节来表示。     所以,从空间上考虑,varcahr较合适;从效率上考虑,用char合适。二者之间需要权衡。     除了char和varchar之外,还有一种nchar、nvarchar(n),包含n个字符的可变长度为unicode字符数据。n的值必须介于1~4000之间,直接的存储大小是说输入字符个数的两倍,所输入的数据字符长度可以为零。从名字上看,多了一个n,表示存储的是unicode数据类型的字符,这是为了存储汉字用的,1个英文字母或者数字占用的字符为1个,一个汉字占用2个字符,那么对于有中英文混合的字符串,我们需要定义nvarchar类型。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。 还有,text类型。其存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
AA大大官 2020-03-31 13:07:28 0 浏览量 回答数 0

阿里云爆款特惠专场,精选爆款产品低至0.95折!

爆款ECS云服务器8.1元/月起,云数据库低至1.5折,限时抢购!

问题

【javascript学习全家桶】934道javascript热门问题,阿里百位技术专家答疑解惑

阿里极客公益活动:或许你挑灯夜战只为一道难题或许你百思不解只求一个答案或许你绞尽脑汁只因一种未知那么他们来了,阿里系技术专家来云栖问答为你解答技术难题了他们用户自己手中的技术来帮助用户成长本次活动特邀百位阿里技术专家对javascript常...
管理贝贝 2019-12-01 20:07:22 6202 浏览量 回答数 1

问题

请教php smarty 插件调用 错误?报错

在smarty/plugins/下,新建文件:modifier.truncate_cn.php 内容如下: <?php /* *作者:http://www.phper...
爱吃鱼的程序员 2020-06-22 13:31:52 0 浏览量 回答数 1

回答

[^\u4e00-\u9fa5] 这是一段匹配除了中文以外的字符串 http://regexpal.com/ 测试 http://unicodelookup.com (资料)###### function str_cut($string, $length, $dot = '...') { $strlen = strlen($string); if($strlen <= $length) return $string; $string = str_replace(array(' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array(' ', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), $string); $strcut = ''; if(strtolower(CHARSET) == 'utf-8') { $n = $tn = $noc = 0; while($n < $strlen) { $t = ord($string[$n]); if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { $tn = 1; $n++; $noc++; } elseif(194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noc += 2; } elseif(224 <= $t && $t < 239) { $tn = 3; $n += 3; $noc += 2; } elseif(240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noc += 2; } elseif(248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noc += 2; } elseif($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n++; } if($noc >= $length) break; } if($noc > $length) $n -= $tn; $strcut = substr($string, 0, $n); } else { $dotlen = strlen($dot); $maxi = $length - $dotlen - 1; for($i = 0; $i < $maxi; $i++) { $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; } } $strcut = str_replace(array('&', '"', "'", '<', '>'), array('&', '"', ''', '<', '>'), $strcut); return $strcut.$dot; }   这个函数是phpcms 2008 中的截取字符串的函数,写的有点多,所以我希望要找个正则匹配的,简单好维护,呵呵###### $str ='中国'; $result = preg_match("/[\x{4e00}-\x{9fa5}]/u",$str); print_r($result);php里面是这样的######这个我已经解决了,还是感谢下,哈~ 我后来查了下,相关版本 比如: [\u4e00-\u9fa5]    [\x{4e00}-\x{9fa5}]/u  ,关于正则匹配的问题涉及到编码问题,还是需要细细考虑下。 over。
kun坤 2020-06-01 09:47:34 0 浏览量 回答数 0

回答

[^\u4e00-\u9fa5] 这是一段匹配除了中文以外的字符串 http://regexpal.com/ 测试 http://unicodelookup.com (资料)###### function str_cut($string, $length, $dot = '...') { $strlen = strlen($string); if($strlen <= $length) return $string; $string = str_replace(array(' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array(' ', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), $string); $strcut = ''; if(strtolower(CHARSET) == 'utf-8') { $n = $tn = $noc = 0; while($n < $strlen) { $t = ord($string[$n]); if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { $tn = 1; $n++; $noc++; } elseif(194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noc += 2; } elseif(224 <= $t && $t < 239) { $tn = 3; $n += 3; $noc += 2; } elseif(240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noc += 2; } elseif(248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noc += 2; } elseif($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n++; } if($noc >= $length) break; } if($noc > $length) $n -= $tn; $strcut = substr($string, 0, $n); } else { $dotlen = strlen($dot); $maxi = $length - $dotlen - 1; for($i = 0; $i < $maxi; $i++) { $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; } } $strcut = str_replace(array('&', '"', "'", '<', '>'), array('&', '"', ''', '<', '>'), $strcut); return $strcut.$dot; }   这个函数是phpcms 2008 中的截取字符串的函数,写的有点多,所以我希望要找个正则匹配的,简单好维护,呵呵###### $str ='中国'; $result = preg_match("/[\x{4e00}-\x{9fa5}]/u",$str); print_r($result);php里面是这样的###### 这个我已经解决了,还是感谢下,哈~ 我后来查了下,相关版本 比如: [\u4e00-\u9fa5]    [\x{4e00}-\x{9fa5}]/u  ,关于正则匹配的问题涉及到编码问题,还是需要细细考虑下。 over。
kun坤 2020-06-15 11:09:08 0 浏览量 回答数 0

回答

[^\u4e00-\u9fa5] 这是一段匹配除了中文以外的字符串 http://regexpal.com/ 测试 http://unicodelookup.com (资料)###### function str_cut($string, $length, $dot = '...') { $strlen = strlen($string); if($strlen <= $length) return $string; $string = str_replace(array(' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array(' ', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), $string); $strcut = ''; if(strtolower(CHARSET) == 'utf-8') { $n = $tn = $noc = 0; while($n < $strlen) { $t = ord($string[$n]); if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { $tn = 1; $n++; $noc++; } elseif(194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noc += 2; } elseif(224 <= $t && $t < 239) { $tn = 3; $n += 3; $noc += 2; } elseif(240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noc += 2; } elseif(248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noc += 2; } elseif($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n++; } if($noc >= $length) break; } if($noc > $length) $n -= $tn; $strcut = substr($string, 0, $n); } else { $dotlen = strlen($dot); $maxi = $length - $dotlen - 1; for($i = 0; $i < $maxi; $i++) { $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; } } $strcut = str_replace(array('&', '"', "'", '<', '>'), array('&', '"', ''', '<', '>'), $strcut); return $strcut.$dot; }   这个函数是phpcms 2008 中的截取字符串的函数,写的有点多,所以我希望要找个正则匹配的,简单好维护,呵呵###### $str ='中国'; $result = preg_match("/[\x{4e00}-\x{9fa5}]/u",$str); print_r($result);php里面是这样的###### 这个我已经解决了,还是感谢下,哈~ 我后来查了下,相关版本 比如: [\u4e00-\u9fa5]    [\x{4e00}-\x{9fa5}]/u  ,关于正则匹配的问题涉及到编码问题,还是需要细细考虑下。 over。
montos 2020-06-02 12:46:19 0 浏览量 回答数 0

回答

"<pre class=""brush:js; toolbar: true; auto-links: false;"">[^\u4e00-\u9fa5] 这是一段匹配除了中文以外的字符串 http://regexpal.com/ 测试 http://unicodelookup.com (资料)###### function str_cut($string, $length, $dot = '...') { $strlen = strlen($string); if($strlen <= $length) return $string; $string = str_replace(array(' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array(' ', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), $string); $strcut = ''; if(strtolower(CHARSET) == 'utf-8') { $n = $tn = $noc = 0; while($n < $strlen) { $t = ord($string[$n]); if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { $tn = 1; $n++; $noc++; } elseif(194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noc += 2; } elseif(224 <= $t && $t < 239) { $tn = 3; $n += 3; $noc += 2; } elseif(240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noc += 2; } elseif(248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noc += 2; } elseif($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n++; } if($noc >= $length) break; } if($noc > $length) $n -= $tn; $strcut = substr($string, 0, $n); } else { $dotlen = strlen($dot); $maxi = $length - $dotlen - 1; for($i = 0; $i < $maxi; $i++) { $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; } } $strcut = str_replace(array('&', '"', "'", '<', '>'), array('&', '"', ''', '<', '>'), $strcut); return $strcut.$dot; }   这个函数是phpcms 2008 中的截取字符串的函数,写的有点多,所以我希望要找个正则匹配的,简单好维护,呵呵###### $str ='中国'; $result = preg_match("/[\x{4e00}-\x{9fa5}]/u",$str); print_r($result);php里面是这样的###### 这个我已经解决了,还是感谢下,哈~ 我后来查了下,相关版本 比如: [\u4e00-\u9fa5]    [\x{4e00}-\x{9fa5}]/u  ,关于正则匹配的问题涉及到编码问题,还是需要细细考虑下。 over。"
montos 2020-05-31 13:03:04 0 浏览量 回答数 0

回答

干嘛不用@ResponseBody 然后直接returnuser呢?######我是被逼的……######回复 @郏高阳:多此一举啊######我不想用这样的方式###### 引用来自“throwable”的答案 干嘛不用@ResponseBody 然后直接returnuser呢? +1###### @RequestMapping("yourFun")@ResponseBodypublicStringyourFun(){return"{'a':1}";} ######这种方法不行中文会乱码###### 最简单的直接用 @ResponseBody返回。其二我经常使用的多视图,代码如下:JsonView.java packagecom.szfore.springmvc;importjava.io.PrintWriter;importjava.util.HashMap;importjava.util.Map;importjava.util.Set;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.util.CollectionUtils;importorg.springframework.validation.BindingResult;importorg.springframework.web.servlet.view.AbstractView;importcom.google.gson.Gson;/***<b>function:</b>扩展AbstractView实现JSON-lib视图*@authorhoojo*@createDate2011-4-28下午05:26:43*@fileMappingJsonlibVeiw.java*@packagecom.hoo.veiw.xml*@projectSpringMVC4View*@bloghttp://blog.csdn.net/IBM_hoojo*@emailhoojo_@126.com*@version1.0*/publicclassJsonViewextendsAbstractView{publicstaticfinalStringDEFAULT_CONTENT_TYPE="application/json";publicstaticfinalStringHTML_CONTENT_TYPE="text/html";publicstaticfinalStringDEFAULT_CHAR_ENCODING="UTF-8";privateStringencodeing=DEFAULT_CHAR_ENCODING;privateObjectjsonData=null;privateMap<String,Object>_jsonDataMap=newHashMap<String,Object>();publicvoidsetEncodeing(Stringencodeing){this.encodeing=encodeing;}privateSet<String>renderedAttributes;publicJsonView(){setContentType(DEFAULT_CONTENT_TYPE);}publicJsonView(Objectdata){setContentType(DEFAULT_CONTENT_TYPE);this.jsonData=data;}@OverrideprotectedvoidrenderMergedOutputModel(Map<String,Object>model,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{response.setCharacterEncoding(encodeing);response.setContentType(getContentType());PrintWriterout=response.getWriter();if(jsonData!=null){out.print(newGson().toJson(jsonData));}elseif(!_jsonDataMap.isEmpty()){out.print(newGson().toJson(_jsonDataMap));}else{model=filterModel(model);out.print(newGson().toJson(model));}}/***Filtersoutundesiredattributesfromthegivenmodel.*<p>Defaultimplementationremoves{@linkBindingResult}instancesandentriesnotincludedinthe{@link*#setRenderedAttributes(Set)renderedAttributes}property.*/protectedMap<String,Object>filterModel(Map<String,Object>model){Map<String,Object>result=newHashMap<String,Object>(model.size());Set<String>renderedAttributes=!CollectionUtils.isEmpty(this.renderedAttributes)?this.renderedAttributes:model.keySet();for(Map.Entry<String,Object>entry:model.entrySet()){if(!(entry.getValue()instanceofBindingResult)&&renderedAttributes.contains(entry.getKey())){result.put(entry.getKey(),entry.getValue());}}returnresult;}publicvoidsetJsonData(ObjectjsonData){this.jsonData=jsonData;}publicstaticJsonViewreturnJson(ObjectjsonData){JsonViewjsonView=newJsonView();jsonView.setJsonData(jsonData);returnjsonView;}publicJsonViewput(Stringkey,Objectvalue){_jsonDataMap.put(key,value);returnthis;}}MultiViewResover.java packagecom.szfore.springmvc;importjava.util.Locale;importjava.util.Map;importorg.springframework.web.servlet.View;importorg.springframework.web.servlet.ViewResolver;/***@authorJeson*@blog:http://www.gbsou.com*@date:Oct20,20098:39:27AM*@version:1.0**/publicclassMultiViewResoverimplementsViewResolver{privateMap<String,ViewResolver>resolvers;privatefinalstaticStringDEFAULT_RESOLVER="jsp";privatefinalstaticStringJSON_RESOLVER="json";privatefinalstaticStringJSON_VIEW_NAME="jsonView";/**自定义resolve类默认为jsp视图,其余视图用下划线分隔*/@OverridepublicViewresolveViewName(StringviewName,Localelocale)throwsException{//判断是否为jsonStringtmpViewName=viewName.trim().toLowerCase();if(JSON_RESOLVER.equals(tmpViewName)){ViewResolverresolver=resolvers.get(JSON_RESOLVER);returnresolver.resolveViewName(JSON_VIEW_NAME,locale);}//若无下划线,默认转向jsp视图intn=viewName.lastIndexOf("_");if(n==(-1)){ViewResolverresolver=resolvers.get(DEFAULT_RESOLVER);returnresolver.resolveViewName(viewName,locale);}//有的话截取下划线后面的字符串这里一般是jsp,ftl,vm与配置文件中的<entrykey="ftl">的key匹配Stringsuffix=viewName.substring(n+1);//根据下划线后面的字符串去获取托管的视图解析类对象ViewResolverresolver=resolvers.get(suffix);//取下划线前面的部分那时真正的资源名.比如我们要使用hello.jsp那viewName就应该是hello_jspviewName=viewName.substring(0,n);if(resolver!=null){returnresolver.resolveViewName(viewName,locale);}returnnull;}publicMap<String,ViewResolver>getResolvers(){returnresolvers;}publicvoidsetResolvers(Map<String,ViewResolver>resolvers){this.resolvers=resolvers;}}xml配置 <!--多视图--><beanname="jsonView"class="com.szfore.springmvc.JsonView"></bean><beanid="viewResolver"class="com.szfore.springmvc.MultiViewResover"><propertyname="resolvers"><map><entrykey="jsp"><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><propertyname="prefix"value="/"/><propertyname="suffix"value=".jsp"/></bean></entry><entrykey="json"><beanclass="org.springframework.web.servlet.view.BeanNameViewResolver"></bean></entry></map></property></bean>使用方法: @RequestMapping("/test")publicJsonViewtest(){returnnewJsonView(newUser());} ######支持一楼######是不是想这样用?找我呗 @RequestMapping(value="/user",method=RequestMethod.GET)publicStringgetUser(){Useruser=newUser();user.setUserName("userName");user.setPassword("password");user.setAge(22);user.setSex("男");user.setBirthday("2013-11-11");return"json:"+JSONUtils.jsonSucess(user);} ###### @郏高阳这样用的目的就是返回JSONObject######我还是返回JSONObject
优选2 2020-06-09 16:13:14 0 浏览量 回答数 0

回答

干嘛不用@ResponseBody 然后直接return user呢? ######我是被逼的……######回复 @郏高阳 : 多此一举啊######我不想用这样的方式###### 引用来自“throwable”的答案 干嘛不用@ResponseBody 然后直接return user呢? +1 ###### @RequestMapping("yourFun") @ResponseBody public String yourFun() { return "{'a':1}"; } ######这种方法不行 中文会乱码###### 最简单的直接用 @ResponseBody返回。 其二我经常使用的多视图,代码如下: JsonView.java package com.szfore.springmvc; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; import org.springframework.web.servlet.view.AbstractView; import com.google.gson.Gson; /** * <b>function:</b>扩展AbstractView 实现JSON-lib视图 * @author hoojo * @createDate 2011-4-28 下午05:26:43 * @file MappingJsonlibVeiw.java * @package com.hoo.veiw.xml * @project SpringMVC4View * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */ public class JsonView extends AbstractView { public static final String DEFAULT_CONTENT_TYPE = "application/json"; public static final String HTML_CONTENT_TYPE = "text/html"; public static final String DEFAULT_CHAR_ENCODING = "UTF-8"; private String encodeing = DEFAULT_CHAR_ENCODING; private Object jsonData = null; private Map<String, Object> _jsonDataMap = new HashMap<String, Object>(); public void setEncodeing(String encodeing) { this.encodeing = encodeing; } private Set<String> renderedAttributes; public JsonView() { setContentType(DEFAULT_CONTENT_TYPE); } public JsonView(Object data) { setContentType(DEFAULT_CONTENT_TYPE); this.jsonData =data; } @Override protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { response.setCharacterEncoding(encodeing); response.setContentType(getContentType()); PrintWriter out = response.getWriter(); if(jsonData != null){ out.print(new Gson().toJson(jsonData)); }else if(!_jsonDataMap.isEmpty()){ out.print(new Gson().toJson(_jsonDataMap)); }else { model = filterModel(model); out.print(new Gson().toJson(model)); } } /** * Filters out undesired attributes from the given model. * <p>Default implementation removes {@link BindingResult} instances and entries not included in the {@link * #setRenderedAttributes(Set) renderedAttributes} property. */ protected Map<String, Object> filterModel(Map<String, Object> model) { Map<String, Object> result = new HashMap<String, Object>(model.size()); Set<String> renderedAttributes = !CollectionUtils.isEmpty(this.renderedAttributes) ? this.renderedAttributes : model.keySet(); for (Map.Entry<String, Object> entry : model.entrySet()) { if (!(entry.getValue() instanceof BindingResult) && renderedAttributes.contains(entry.getKey())) { result.put(entry.getKey(), entry.getValue()); } } return result; } public void setJsonData(Object jsonData){ this.jsonData = jsonData; } public static JsonView returnJson(Object jsonData){ JsonView jsonView = new JsonView(); jsonView.setJsonData(jsonData); return jsonView; } public JsonView put(String key, Object value) { _jsonDataMap.put(key, value); return this; } } MultiViewResover.java package com.szfore.springmvc; import java.util.Locale; import java.util.Map; import org.springframework.web.servlet.View; import org.springframework.web.servlet.ViewResolver; /** * @author Jeson * @blog:http://www.gbsou.com * @date:Oct 20, 2009 8:39:27 AM * @version :1.0 * */ public class MultiViewResover implements ViewResolver { private Map<String, ViewResolver> resolvers; private final static String DEFAULT_RESOLVER = "jsp"; private final static String JSON_RESOLVER = "json"; private final static String JSON_VIEW_NAME = "jsonView"; /* * 自定义resolve类默认为jsp视图,其余视图用下划线分隔 */ @Override public View resolveViewName(String viewName, Locale locale) throws Exception { //判断是否为json String tmpViewName = viewName.trim().toLowerCase(); if(JSON_RESOLVER.equals(tmpViewName)){ ViewResolver resolver = resolvers.get(JSON_RESOLVER); return resolver.resolveViewName(JSON_VIEW_NAME, locale); } //若无下划线,默认转向jsp视图 int n = viewName.lastIndexOf("_"); if (n == (-1)){ ViewResolver resolver = resolvers.get(DEFAULT_RESOLVER); return resolver.resolveViewName(viewName, locale); } //有的话截取下划线后面的字符串 这里一般是jsp,ftl,vm与配置文件中的<entry key="ftl">的key匹配 String suffix = viewName.substring(n + 1); // 根据下划线后面的字符串去获取托管的视图解析类对象 ViewResolver resolver = resolvers.get(suffix); // 取下划线前面的部分 那时真正的资源名.比如我们要使用hello.jsp 那viewName就应该是hello_jsp viewName = viewName.substring(0, n); if (resolver != null){ return resolver.resolveViewName(viewName, locale); } return null; } public Map<String, ViewResolver> getResolvers() { return resolvers; } public void setResolvers(Map<String, ViewResolver> resolvers) { this.resolvers = resolvers; } } xml配置 <!-- 多视图 --> <bean name="jsonView" class="com.szfore.springmvc.JsonView"> </bean> <bean id="viewResolver" class="com.szfore.springmvc.MultiViewResover"> <property name="resolvers"> <map> <entry key="jsp"> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/" /> <property name="suffix" value=".jsp" /> </bean> </entry> <entry key="json"> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> </bean> </entry> </map> </property> </bean> 使用方法: @RequestMapping("/test") public JsonView test(){ return new JsonView(new User()); } ######支持一楼######是不是想这样用?找我呗 @RequestMapping(value="/user", method=RequestMethod.GET) public String getUser() { User user = new User(); user.setUserName("userName"); user.setPassword("password"); user.setAge(22); user.setSex("男"); user.setBirthday("2013-11-11"); return "json:" + JSONUtils.jsonSucess(user); } ###### @郏高阳 这样用的目的就是返回JSONObject######我还是返回JSONObject
爱吃鱼的程序员 2020-05-30 22:43:36 0 浏览量 回答数 0

问题

从HTML中攫取你所需的信息:报错

本文并非想通过分析HTML的语法然后从中解析出数据,这样做实现困难而且没有什么实际应用的意义,或者应该这样说:我们并不想自己去实现一个HTML语 法的分析器。我们要做的仅仅是从HTML中提取我们所需...
kun坤 2020-06-08 11:01:51 3 浏览量 回答数 1

问题

验证码图片与SESSION中的值不同步:报错 

验证码图片与SESSION中的值不同步? 不知什么原因,求解决 实例:http://wwsw.janwan.info index.php <!DOCTYPE html PUBLIC &#...
kun坤 2020-06-04 21:16:03 4 浏览量 回答数 1

问题

验证码图片与SESSION中的值不同步 - 服务报错

" 验证码图片与SESSION中的值不同步? 不知什么原因,求解决 实例:http://wwsw.janwan.info index.php ----------...
montos 2020-06-04 14:01:03 5 浏览量 回答数 1

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务