jsp 输出 html 源码排版混乱

2016-09-02 21:17:36 +08:00
 wemore

这是源码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page trimDirectiveWhitespaces="true" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <title>登录成功</title>
  <link href="./text.css" type="text/css" rel="stylesheet">
  </head>
  <body>
 <s:div cssClass="sele">
${ users.name}

    登录成功
 </s:div>
  </body>
</html>

这是输出的html源码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <title>登录成功</title>
  <link href="./text.css" type="text/css" rel="stylesheet">
  </head>
  <body>
 <div
                   id=""         
    
             class="sele"    
    
    >abc

    登录成功
 </body>
</html>
刚学ssh,问题感觉在struts标签上,求各位菊苣解释。虽然不影响正常显示页面,但看起来太难受了。求各位菊苣给个解决办法

2789 次点击
所在节点    Java
12 条回复
learnshare
2016-09-02 21:23:45 +08:00
不要直接看源码,可以通过浏览器看,或者通过 Sublime Text 的 HTML-CSS-JS prettify 插件格式化完成再看
wemore
2016-09-02 21:34:31 +08:00
wemore
2016-09-02 21:36:52 +08:00
@learnshare jsp 显示到浏览器的页面源码显示乱,好多空格。 http://i1.piimg.com/567571/eee88b46435634cb.jpg
misaka19000
2016-09-02 21:46:30 +08:00
就是这样的, JSP 确实会存在这个问题

想要解决可以参考[获取 Servlet 的响应并修改其内容]( https://www.nosuchfield.com/2016/03/29/%E8%8E%B7%E5%8F%96Servlet%E7%9A%84%E5%93%8D%E5%BA%94%E5%B9%B6%E4%BF%AE%E6%94%B9%E5%85%B6%E5%86%85%E5%AE%B9/),解决的思路是在响应发给客户端之前对响应的源代码进行格式化

但是说实话,没有必要,因为源码这种东西需要那么好看干嘛呢?而且上面的这种方式还会增加程序的计算量

不过也许除我这种之外还有更好的方法吧,期待楼下给出解答
letitbesqzr
2016-09-02 21:47:05 +08:00
web.xml 上加上(servlet 2.5 以上):

```
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
```
misaka19000
2016-09-02 21:48:36 +08:00
把链接重贴一下: https://www.nosuchfield.com/2016/03/29/获取 Servlet 的响应并修改其内容 /
misaka19000
2016-09-02 21:52:40 +08:00
@letitbesqzr 好厉害,学习到了
wemore
2016-09-02 22:00:00 +08:00
@letitbesqzr 不行,还是没有变化。那种方法和我在 jsp 里引<%@page   trimDirectiveWhitespaces="true" %>得到应该效果差不多,但是在这个里面没用。
chocotan
2016-09-03 11:18:16 +08:00
tomcat 版本是?
6.0.x 才支持 servlet 2.5
wemore
2016-09-03 14:01:39 +08:00
@chocotan tomcat 8.0
wemore
2016-09-03 14:05:09 +08:00
感谢各位回复,目前找了个不是很好的解决方法。在 struts.xml 里加<constant name="struts.ui.theme" value="simple"/>
去掉模板效果可以。但是<s:textfield name="user.name" label="姓名"/>这种"label"好像会失效。不折腾了,减少 ui tag 使用吧,唉=。=
ppwangs
2016-09-14 13:37:08 +08:00
struts 还是能早点扔就扔吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/303552

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX