javaweb跳转jsp页面时变成下载jsp文件解决方法s

目录

【背景】 

【问题描述】

【代码页面】

【网页显示】

【解决方法】

--我自己的尝试:

1.检查jsp代码内容是否有拼写错误

2.在pom.xml里面添加依赖

3.不要在web.xml配servlet!!【我最终的解决方法】

 【成功页面】

【总结】 


【背景】 

javaweb刚入门,照着书编写用户注册登录页面

【问题描述】

编写好login.html,welcome.jsp,目的是在登录成功的时候实现跳转。但是跳转jsp页面不成功,都变成了下载jsp文件,查遍全网没有任何有效解决方法,困扰了我一个多月!!

【代码页面】

【网页显示】

 点击登录按钮后变成了:

不会跳转jsp页面!!变成了下载jsp文件!! 

为此我的电脑已经下载了十几二十几个jsp文件了……真的哭了……

而且老师还让设计个系统,根本不知道怎么解决。

【解决方法】

--我自己的尝试:

问过老师看不出来什么问题……问了同学说我可能tomcat配的不好,我又怕是自己之前乱搞过idea的设置,所以这困扰的一个月里我尝试了恢复idea默认设置下载1.8的jdk(我原本用的是jdk11)、重新配置tomcat重新配置servlet安装旧版本的tomcat(我现在电脑里分别有7.0、8.5、9.0三个版本的tomcat),都没有结果,走投无路突然柳暗花明了。

所以问题没有出现在配置这一块,差点怀疑自己电脑有问题了……(另外个人+老师建议的话tomcat安装8或9的,mysql安装8的,jdk1.8的,比较合适。另外也不用安装这么多tomcat版本,我是实在没办法了才尝试了这么多,其实有一个能用就可以了。)

1.检查jsp代码内容是否有拼写错误

从网上查到的,检查jsp代码内容是否有拼写错误,如text拼成test,page拼成Page等。

因为我出现这个问题后直接和同学要了一份他们自己运行成功的代码,所以可以确定我的代码文件里没有拼写错误。

2.在pom.xml里面添加依赖

这个解决方法网上有很多,可以尝试。

但是我只是刚入门javaweb,没有用到springboot,网上这个方法多应用于springboot项目,我也尝试过但未果。

3.不要在web.xml配servlet!!【我最终的解决方法】

因为我用idea运行jsp文件的时候发现打开来是源码,于是搜索了jsp运行只出现源码的解决方法。

正是这个可恶的原因!!

参考文章有二:

一:(66条消息) idea环境下 servlet配置导致jsp页面显示源码问题_idea调转servlet出现代码_任性不追风的克罗恩!的博客-CSDN博客

二:(66条消息) IDEA运行jsp文件变成源码详细解决方案_idea打开jsp是源代码_Cutele_的博客-CSDN博客反正我最后是直接把这一整段servlet配置删了就好了,没有加注解。这样的话jsp文件运行就成功了,不会变成源代码。然后我就想着尝试回原来的页面看看能不能跳转,没想到真的跳转成功了!!

 【成功页面】

【总结】 

1.敲代码途中多运行几次,说不定解决了这个bug能够顺便解决另外一个bug。

2.其实我和我同学的配置一模一样,配了jdk1.8,tomcat9.0.72,她的项目里web.xml也配了servlet,但是不会出现下载jsp文件的问题,项目到了我的电脑上就变成了下载jsp文件,所以我这种情况可能真的是个例吧,但是看网上并没有这类解决方法,遂写下这篇文章,望有用。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现jsp页面间的跳转 public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {   response.setContentType("text/html; charset=gb2312");   ServletContext sc = getServletContext();   RequestDispatcher rd = null;   rd = sc.getRequestDispatcher("/index.jsp"); //定向的页面   rd.forward(request, response); }   通常在servlet中使用,不在jsp中使用。    2.response.sendRedirect()   是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.   重定向后在浏览器地址栏上会出现重定向页面的URL   例:在servlet中重定向 public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {   response.setContentType("text/html; charset=gb2312");   response.sendRedirect("/index.jsp"); }   由于response是jsp页面中的隐含对象,故在jsp页面中可以用response.sendRedirect()直接实现重定位。   注意:    (1) 使用response.sendRedirect,前面不能有HTML输出   这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说 JSP SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的HTML输出也是允许的。    (2) response.sendRedirect之后,应该紧跟一句return;   我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。   比较:    (1) Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;    (2) response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。   前者更加高效,在前者可以满足需要,尽量使用RequestDispatcher.forward()方法.   注:在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。    3.   它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。   如果在之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。   另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交    4.修改HTTP header的Location属性来重定向   通过设置直接修改地址栏来实现页面的重定向。    jsp文件代码如下:    5.JSP中实现在某页面停留若干秒后,自动重定向到另一页面   在html文件中,下面的代码: <meta http-e

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值