java 通过servlet生成html文件无法立即访问

自由的程序猿 2016-12-20 10:24:34
java+tomcat
需求:在servlet中将返回的结果保存成html,然后直接访问该html文件。
问题:该html不能马上被访问,但是程序判断文件是存在的,因此会提示404,大约5s以后,html文件可正常访问。
...全文
611 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljheee 2016-12-21
  • 打赏
  • 举报
回复
将返回的结果直接forward到一个jsp页面不就行了
自由的程序猿 2016-12-21
  • 打赏
  • 举报
回复
卧槽,直接点无满意答案,不给分的?对不起各位大佬了
自由的程序猿 2016-12-21
  • 打赏
  • 举报
回复
问题还是木有解决,先结帖了吧,一天了
bcsflilong 2016-12-20
  • 打赏
  • 举报
回复
引用 8 楼 a61595579 的回复:
[quote=引用 7 楼 bcsflilong 的回复:] [quote=引用 6 楼 a61595579 的回复:] [quote=引用 5 楼 bcsflilong 的回复:] [quote=引用 3 楼 a61595579 的回复:] [quote=引用 2 楼 bcsflilong 的回复:] 返回的结果保存成html,然后直接访问该html文件。 那个返回结果是什么东西? 是一个页面? 将一个servlet接受到的东西 生成到一个html里?
返回的内容是一个页面[/quote]你要把返回的那个页面保存到一个文件里吗?[/quote] 是的 我把返回的内容保存在一个静态页,然后直接访问这个静态页,中间会有几秒的真空期,提示404找不到文件[/quote] 你这个问题 不是你的程序的问题 你应该是在eclipse 里发布的这个程序吧 你生成的这个静态页 没有被实时的部署到web服务器(tomcat上) 你可以修改程序 将静态文件的生成路径直接加入到web服务器的上这个工程的实际发布路径 而不是eclispe下的路径内[/quote] 我的路径直接设置的tomcat下路径,刚才把eclipse关掉,直接启动tomcat,还是有这个问题[/quote]设置tomcat <Context reload="true"/>
爱睡觉的阿狸 2016-12-20
  • 打赏
  • 举报
回复
引用 4 楼 a61595579 的回复:
[quote=引用 1 楼 m2200 的回复:] 直接把内容显示到jsp里面,外围用jsp包裹下。我们以前保存富文本的时候,考虑过生成HTML,但后来是只保存内容,直接把内容带入到jsp中显示,这样方便点。
你的意思是类似include么[/quote] 不是,直接${content}即可
奄灬苟且偷生 2016-12-20
  • 打赏
  • 举报
回复
以上jsp统一看为html习惯了
奄灬苟且偷生 2016-12-20
  • 打赏
  • 举报
回复
这样吧 你先把浏览器的url改成绝对路径生成后直接通过绝对路径去访问, 1、能出来,说明你的jsp写的不是绝对路径,是相对的,tomcat应该没有吧文件加载进来 2、不能访问,说明你的后台生成文件有点问题,可能是字符流没有关闭,或者你没有确认文件是否生成完成,你就直接去访问jsp去了 先确定是哪个问题,就好解决了
自由的程序猿 2016-12-20
  • 打赏
  • 举报
回复
引用 7 楼 bcsflilong 的回复:
[quote=引用 6 楼 a61595579 的回复:] [quote=引用 5 楼 bcsflilong 的回复:] [quote=引用 3 楼 a61595579 的回复:] [quote=引用 2 楼 bcsflilong 的回复:] 返回的结果保存成html,然后直接访问该html文件。 那个返回结果是什么东西? 是一个页面? 将一个servlet接受到的东西 生成到一个html里?
返回的内容是一个页面[/quote]你要把返回的那个页面保存到一个文件里吗?[/quote] 是的 我把返回的内容保存在一个静态页,然后直接访问这个静态页,中间会有几秒的真空期,提示404找不到文件[/quote] 你这个问题 不是你的程序的问题 你应该是在eclipse 里发布的这个程序吧 你生成的这个静态页 没有被实时的部署到web服务器(tomcat上) 你可以修改程序 将静态文件的生成路径直接加入到web服务器的上这个工程的实际发布路径 而不是eclispe下的路径内[/quote] 我的路径直接设置的tomcat下路径,刚才把eclipse关掉,直接启动tomcat,还是有这个问题
bcsflilong 2016-12-20
  • 打赏
  • 举报
回复
引用 6 楼 a61595579 的回复:
[quote=引用 5 楼 bcsflilong 的回复:] [quote=引用 3 楼 a61595579 的回复:] [quote=引用 2 楼 bcsflilong 的回复:] 返回的结果保存成html,然后直接访问该html文件。 那个返回结果是什么东西? 是一个页面? 将一个servlet接受到的东西 生成到一个html里?
返回的内容是一个页面[/quote]你要把返回的那个页面保存到一个文件里吗?[/quote] 是的 我把返回的内容保存在一个静态页,然后直接访问这个静态页,中间会有几秒的真空期,提示404找不到文件[/quote] 你这个问题 不是你的程序的问题 你应该是在eclipse 里发布的这个程序吧 你生成的这个静态页 没有被实时的部署到web服务器(tomcat上) 你可以修改程序 将静态文件的生成路径直接加入到web服务器的上这个工程的实际发布路径 而不是eclispe下的路径内
自由的程序猿 2016-12-20
  • 打赏
  • 举报
回复
引用 5 楼 bcsflilong 的回复:
[quote=引用 3 楼 a61595579 的回复:] [quote=引用 2 楼 bcsflilong 的回复:] 返回的结果保存成html,然后直接访问该html文件。 那个返回结果是什么东西? 是一个页面? 将一个servlet接受到的东西 生成到一个html里?
返回的内容是一个页面[/quote]你要把返回的那个页面保存到一个文件里吗?[/quote] 是的 我把返回的内容保存在一个静态页,然后直接访问这个静态页,中间会有几秒的真空期,提示404找不到文件
bcsflilong 2016-12-20
  • 打赏
  • 举报
回复
引用 3 楼 a61595579 的回复:
[quote=引用 2 楼 bcsflilong 的回复:] 返回的结果保存成html,然后直接访问该html文件。 那个返回结果是什么东西? 是一个页面? 将一个servlet接受到的东西 生成到一个html里?
返回的内容是一个页面[/quote]你要把返回的那个页面保存到一个文件里吗?
自由的程序猿 2016-12-20
  • 打赏
  • 举报
回复
引用 1 楼 m2200 的回复:
直接把内容显示到jsp里面,外围用jsp包裹下。我们以前保存富文本的时候,考虑过生成HTML,但后来是只保存内容,直接把内容带入到jsp中显示,这样方便点。
你的意思是类似include么
自由的程序猿 2016-12-20
  • 打赏
  • 举报
回复
引用 2 楼 bcsflilong 的回复:
返回的结果保存成html,然后直接访问该html文件。 那个返回结果是什么东西? 是一个页面? 将一个servlet接受到的东西 生成到一个html里?
返回的内容是一个页面
bcsflilong 2016-12-20
  • 打赏
  • 举报
回复
返回的结果保存成html,然后直接访问该html文件。 那个返回结果是什么东西? 是一个页面? 将一个servlet接受到的东西 生成到一个html里?
爱睡觉的阿狸 2016-12-20
  • 打赏
  • 举报
回复
直接把内容显示到jsp里面,外围用jsp包裹下。我们以前保存富文本的时候,考虑过生成HTML,但后来是只保存内容,直接把内容带入到jsp中显示,这样方便点。
奄灬苟且偷生 2016-12-20
  • 打赏
  • 举报
回复
我做过这种东西 是生成的文件 然后下载的 跟这个是一个道理啊,有点想不通啊 你要不要试试换换tomcat或者虚拟was服务器 如果你都已经确定思路没有问题,应该是环境的问题吧? 要不你试试
bcsflilong 2016-12-20
  • 打赏
  • 举报
回复
引用 19 楼 a61595579 的回复:
[quote=引用 12 楼 bcsflilong 的回复:] [quote=引用 8 楼 a61595579 的回复:] [quote=引用 7 楼 bcsflilong 的回复:] [quote=引用 6 楼 a61595579 的回复:] [quote=引用 5 楼 bcsflilong 的回复:] [quote=引用 3 楼 a61595579 的回复:] [quote=引用 2 楼 bcsflilong 的回复:] 返回的结果保存成html,然后直接访问该html文件。 那个返回结果是什么东西? 是一个页面? 将一个servlet接受到的东西 生成到一个html里?
返回的内容是一个页面[/quote]你要把返回的那个页面保存到一个文件里吗?[/quote] 是的 我把返回的内容保存在一个静态页,然后直接访问这个静态页,中间会有几秒的真空期,提示404找不到文件[/quote] 你这个问题 不是你的程序的问题 你应该是在eclipse 里发布的这个程序吧 你生成的这个静态页 没有被实时的部署到web服务器(tomcat上) 你可以修改程序 将静态文件的生成路径直接加入到web服务器的上这个工程的实际发布路径 而不是eclispe下的路径内[/quote] 我的路径直接设置的tomcat下路径,刚才把eclipse关掉,直接启动tomcat,还是有这个问题[/quote]设置tomcat <Context reload="true"/>[/quote] 我把配置改成这样了

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true" reloadable="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
		<Context path="/redisTest" docBase="D:\tomcat8\apache-tomcat-8.0.36\webapps\redisTest" reloadable="true" debug="0" crossContext="true"/>
      </Host>
还是没有用,有写错的地方么?[/quote]你这么写按理说没毛病了
自由的程序猿 2016-12-20
  • 打赏
  • 举报
回复
引用 18 楼 ch1240249252 的回复:
你早说啊,你文件的名字 以参数的形式访问好不好 判断一下有没有 有也跳转到这个地址,没有生成完在跳转到这个地址 不就好了 你直接访问 直接就404了 还生成什么啊
你有看清楚我的描述么? 第一,我在servlet里有判断文件是否存在 第二,我是判断存在的情况下,才会直接访问,不存在的话会先生成,再访问 最后,我刚才修改了打印log,已经确定当浏览器提示404的时候,后台读到的文件是有完整的文本输出的
自由的程序猿 2016-12-20
  • 打赏
  • 举报
回复
引用 12 楼 bcsflilong 的回复:
[quote=引用 8 楼 a61595579 的回复:] [quote=引用 7 楼 bcsflilong 的回复:] [quote=引用 6 楼 a61595579 的回复:] [quote=引用 5 楼 bcsflilong 的回复:] [quote=引用 3 楼 a61595579 的回复:] [quote=引用 2 楼 bcsflilong 的回复:] 返回的结果保存成html,然后直接访问该html文件。 那个返回结果是什么东西? 是一个页面? 将一个servlet接受到的东西 生成到一个html里?
返回的内容是一个页面[/quote]你要把返回的那个页面保存到一个文件里吗?[/quote] 是的 我把返回的内容保存在一个静态页,然后直接访问这个静态页,中间会有几秒的真空期,提示404找不到文件[/quote] 你这个问题 不是你的程序的问题 你应该是在eclipse 里发布的这个程序吧 你生成的这个静态页 没有被实时的部署到web服务器(tomcat上) 你可以修改程序 将静态文件的生成路径直接加入到web服务器的上这个工程的实际发布路径 而不是eclispe下的路径内[/quote] 我的路径直接设置的tomcat下路径,刚才把eclipse关掉,直接启动tomcat,还是有这个问题[/quote]设置tomcat <Context reload="true"/>[/quote] 我把配置改成这样了

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true" reloadable="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
		<Context path="/redisTest" docBase="D:\tomcat8\apache-tomcat-8.0.36\webapps\redisTest" reloadable="true" debug="0" crossContext="true"/>
      </Host>
还是没有用,有写错的地方么?
奄灬苟且偷生 2016-12-20
  • 打赏
  • 举报
回复
你早说啊,你文件的名字 以参数的形式访问好不好 判断一下有没有 有也跳转到这个地址,没有生成完在跳转到这个地址 不就好了 你直接访问 直接就404了 还生成什么啊
加载更多回复(5)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧