需求:controller返回浏览器会渲染的html页面字符串
1.实现方式一
直接通过HttpServletResponse以流的方式将html字符串写到浏览器页面,注意设置Header,标志让浏览器以html方式处理。
PrintWriter pw =null; response.setHeader("Content-Type","text/html;charset=UTF-8"); try { pw = response.getWriter(); pw.write(sbHtml.toString()); pw.flush(); } catch (IOException e) { e.printStackTrace(); } finally { pw.close(); }
2.实现方式二
1.设置springMVC实现,设置produces 标志浏览器处理类型。默认是json
@RequestMapping(value = "/getPage1", produces = {MediaType.TEXT_HTML_VALUE}) @ResponseBody public String getPage1(){ StringBuffer sbHtml = new StringBuffer(); sbHtml.append("<!doctype html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">"); sbHtml.append("<title>支付宝即时到账交易接口</title></head><body>77312534</body></html>"); return sbHtml.toString(); }
2.在做返回json转化时,字符串默认会加上双引号,浏览器无法解析。需在spring-mvc.xml中做一下设置:
<!-- 增加配置,controller返回字符串去掉双引号--> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"/> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> </mvc:message-converters> </mvc:annotation-driven>
补充:
java后台操作html字符串并当作一个页面返回给浏览器
引入依赖包
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.10.3</version> </dependency>
后台代码如下
/** * 操作html字符串 * @param request * @param response * @throws IOException */ @RequestMapping("WStoHtml") public void WStoHtml(HttpServletRequest request,HttpServletResponse response) throws IOException{ String url = "http://localhost:8082/bim/static/form2/ApplicationFormTable.htm"; String body = HttpClientUtil.doPost(url);//body为获取的html代码 //System.out.println(body); //System.out.println("11111"); Document doc = Jsoup.parse(body); Elements es = doc.select("table"); for (Element element : es) { element.html("123");//将table的内容替换为123 } for (Element element : es) { System.out.println(element.html()); } System.out.println(doc.outerHtml()); response.setContentType("text/html;charset=utf-8"); PrintWriter out=response.getWriter(); out.println(doc.outerHtml()); }