为什么我的tomcat jsp执行不了jsp,打开是源代码

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
生活 ,我追求逍遥自在
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(616)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'Tomcat 禁止缓存jsp代码',
blogAbstract:'项目中的更新服版本号站点用的是jsp+Tomcat,每次更新jsp代码的时候,因为Tomcat缓存造成了没能及时运行最新的代码,很是烦恼。于是百度了一下,尝试了修改Tomcat的配置文件,可能是我不怎么熟悉Tomcat没配置正确吧~后来发现调整一下jsp代码,即可解决这个问题。在jsp文件的开头处加上以下代码即可:response.setHeader(\"Pragma\",\"No-cache\");& //HTTP 1.1&&&& &response.setHeader(\"Cache-Control\",\"no-cache\");//HTTP 1.0&&&&&& &response.setDateHeader(\"Expires\",0); //防止被proxy& ',
blogTag:'服务器',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:3,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'生活 ,我追求逍遥自在',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}3572人阅读
由于工作需要,要把外包给别的公司的项目发布到公司服务器上,本地测试全部通过,但是有一些在系统中没有用到的无关紧要的JSP页面有错误,这些错误时由于系统升级遗留下来的因为API换了导致的错误。
重点来了,本地测试好好的,发布到服务器上时,因为Tomcat无法编译部分系统用到的JSP页面,这下好了,一直显示无法加载类或是class文件不存在。错误截图如下:
在查看了Tomcat日志后,我发现了应用下的一个包没有被引入,而且这个包就是servlet-api.jar,以前遇到过这个包跟Tomcat自带的冲突导致程序运行不起来,所以我直接删了这个jar包,tomcat重启后页面正常访问。大功告成?No No No。在我满心欢喜的查看后台管理页面时,又发现了差不多一样的问题,请看截图:
哎 class文件未找到,这是怎么回事呢。我们都知道jsp页面本质是一个servlet或者说是一个java文件,只是被包装成.jsp后缀的文件了而已,但总归是要在jsp页面第一次被访问时转换成servlet,然后生成.class文件的。总的来说出现这个错误的可能有三个:页面有错误、jar包冲突、Tomcat容器出错。按理来说Tomcat容器是不太可能出错的,但一般我们排除错误时,往往可能从最不可能出现错误的地方查起,这就导致了我们排错的效率低下。
先说下配置:Tomcat 7.0.64,JDK1.7.0.79
我说下我的错误的排错之旅:因为刚开始不熟悉Tomcat的一些详细配置,毕竟以前我也只是写代码而已,没怎么关注过Tomcat具体怎么配置程序才有好的性能啊什么的。一开始出错,我就问外包公司的项目对接人员,他们服务器上的配置,然而我并没有完全按照他们使用的版本配置,我总共换了三个Tomcat,刚开始的Tomcat7,接着的Tomcat6.0.44,最后是外包公司的版本Tomcat6.0.30。在换了前两个Tomcat依然无法编译jsp时,我又换回了Tomcat7,因为是开发常用的版本。
前面的思路行不通,我就想到,能不能直接把本地编译好的jsp的class文件上传到Tomcat下work相同目录下,即/work/Catalina/localhost/_/org/tomcat/jsp/下的同目录下。重启了一下Tomcat,后台页面居然真的没错了。唉 这下也不能说搞定了。为什么呢,因为这种办法持续了没多久,在我再次启动Tomcat时,前台后台一起出现了前面所说的同样的错误。真折磨人呐
咱一个小小的程序员,用得着这样嘛。哈哈 发下牢骚。其实这也是很多开发人员常常遇到一个问题,就是刚刚接触到新事物时,常常是懵懵懂懂的状态,用了人家的框架啊什么的,原理都不懂,出事了赶紧找度娘,搜来搜去,直到哪个方法解决了你的问题,这时猿媛们就放弃继续深入学习的劲头了。
哈哈 又唠叨了一堆话。最后实在没办法,硬着头皮去改系统的源代码,哎呀妈呀,这半升级版残废的系统,写的有些好有些坏,还没升级完就给我们用了,真不厚道。最后,在改源代码的过程中,我发现程序规范真的很重要,为什么呢,因为当你看到别人烂成一坨翔的代码你的感受就深了。一般来说,在公司写的代码都应该尽可能的规范,因为你不知道什么时候你的代码可能被重用,如果你写的代码在重用时出了问题,公司不找你找谁。另外一个问题,就是变量初始化,由于jsp页面上通过jsp各种表达式什么的嵌入了大量的java代码,页面有点混乱,好些变量只有声明没有初始化,这可能会导致运行时异常。还有一个问题是关于泛型的,像ArrayList这样的集合类,在初始化时没有声明具体要放入集合的类型,这时集合对元素的类型检查就比较麻烦,而如果你在初始化时就声明具体的元素类型,这时在你放入另外一个类型时,集合会很容易的发现问题并抛出异常,具体啥异常忘了。其实这一块我也只是懂一点点,就让我装一下吧。最后一个问题就是关于javascript和jsp页面规范。有些人在写代码的时候,容易把两者的注释表达式啊之类的混合着用,这难道有错?没有,只是你错误的混用了而已。由于javascript是一种弱类型语言,所以很多人未了省事,不给变量初始化,当这个变量不是普通的数据类型,例如数组、对象呢,这时就可能导致页面的错误了。
其实在我检查修改了源代码后,系统的所有页面已经可以正常的在Tomcat7下正常的运行了,包括前面出错的页面。慢着,还没说完Tomcat6.0.30呢,解决了问题后,我再次想想验证一下原来系统为什么能在本地测试时正常运行,本地测试是直接MyEclipse发布到,但是找不到问题。最后我又按照外包公司的Tomcat版本来配置运行未修改过的系统,我的妈呀,系统活的好好的喔,页面错误不用修改直接就能正常运行,百思不得其解。问了项目对接人员,也说不知道,有没哪位大神知道告诉我一声呀。难道是Tomcat6.0.30的容错性比Tocat7.0.64的好
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4086次
排名:千里之外[转载]jsp程序放到tomcat里面怎么才能不需要输入项目名称直接输入IP地址自
17:42 1345人阅读 (0)
对于Tomcat而言,就是把项目放到webapps文件夹下的ROOT文件夹,这个文件夹下本来就有一些Tomcat默认的页面。然后可以:
1.把原来的所有文件都删除,然后把要布置的项目复制过来即可;
2.如果仅仅是一个静态的页面,就可以先复制过来,然后修改WEB-INF文件夹下的web.xml文件,在该文件中添加下面的语句:
&welcome-file-list&
&welcome-file&JsGame2.html//这就是要打开的页面
&/welcome-file&
&&/welcome-file-list&
经过这样的修改以后,然后在地址栏中直接输入或()就可以直接打开指定的项目或页面。
注:在修改web.xml文件时,用的是EditPlus,当修改过后产生一个web.xml.bak文件,该文件是web.xml的备份文件,把后缀修改后就可以直接用。这个备份文件是EditPlus自动产生的,要是不想让它自动产生备份文件可以进行如下修改:
EditPlus-》工具-》参数-》文件(文件根节点)
-》保存文件时创建备份 勾去掉
-----------------------------------------------------------------------------------------------------------------------------------------
1,将你项目拷贝到webapps下面,你的项目名改为ROOT
2.设置虚拟路径。修改tomcat/conf/server.xml文件在最下面的
&Context path="" debug="0" docBase="你项目的决定路径"
reloadable="true"&
&/Context&
& &/Service&
jsp程序放到tomcat里面怎么才能不需要输入项目名称直接输入IP地址自动跳转到该页面?
分类: | 浏览1443次
我有更好的答案
提问者采纳
在tomcat的webapp里面root下面放一个默认的index.jsp,里面加自动跳转js。
window.location.href="你的项目地址";
前提是index.jsp需要在你的welcome list里面。
阅读(4440) 评论(4)
简要记录主要步骤备忘
1、进入到jdk下的bin目录
2、输入如下指令
keytool -v -genkey -alias tomcat -keyalg RSA -keystore
d:/tomcat.keystore&&-validity
d:/tomcat.keystore是将生成的tomcat.keystore放到d盘根目录下。
"-validity&36500”含义是证书有效期,36500表示100年,默认值是90天
注意若要放到c盘,在win7系统下,需要以管理员身份进入到命令行中进行操作,否则是无法创建tomcat.keystore的。本例放到d盘下。
如何以管理员身份进入到命令行下呢?开始-&搜索框中输入cmd-&等待(注意不回车)-&出现cmd.exe-&右键“以管理员身份运行”即可。
3、输入keystore密码
密码任意,此处以123456为例,要记住这个密码,之后在进行server.xml配置时需要使用。
4、输入名字、组织单位、组织、市、省、国家等信息
注意事项:
A、Enter keystore password:此处需要输入大于6个字符的字符串
B、“What is your first and last
name?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:&或者&10.1.25.251],就是你将来要在浏览器中输入的访问地址
C、“What is the name of your organizational unit?”、“What is the
name of your organization?”、“What is the name of your City or
Locality?”、“What is the name of your State or Province?”、“What is
the two-letter country code for this
unit?”可以按照需要填写也可以不填写直接回车,在系统询问“correct?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入
“n”重新填写上面的信息
D、Enter key password for
&tomcat&,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以
l&&完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件
5、输入之后会出现确认的提示
此时输入y,并回车。此时创建完成keystore。
进入到D盘根目录下可以看到已经生成的tomcat.xml
6、进入tomcat文件夹
找到conf目录下的sever.xml并进行编辑
&Connector port="8443" protocol="HTTP/1.1"
SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false"
keystoreFile="D:/AppServer/Tomcat/apache-tomcat-6.0.32/conf/tomcat.keystore"
keystorePass="deleiguo" sslProtocol="TLS" /&
注: 方框中的keystore的密码,就是刚才我们设置的“123456”.
编辑完成后关闭并保存sever.xml
8、Tomcat启动成功后,使用https://127.0.0.1:8443 访问页面
页面成功打开即tomcat下的https配置成功。
9、应用程序HTTP自动跳转到HTTPS
在应用程序中web.xml中加入:
&security-constraint&&
&&&&&&&&web-resource-collection
&&&&&&&&&&&&&&&web-resource-name
&SSL&/web-resource-name&&
&&&&&&&&&&&&&&&url-pattern&/*&/url-pattern&&
&&&&&&&&/web-resource-collection&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&user-data-constraint&&
&&&&&&&&&&&&&&&transport-guarantee&CONFIDENTIAL&/transport-guarantee&&
&&&&&&&&/user-data-constraint&&
&/security-constraint&
10、生成安全证书文件
keytool -export -alias tomcat -file D:/file.cer -keystore
d:/tomcat.keystore -validity 36500
然后输入d:/tomcat.keystore中的keystore密码
-file D:/file.cer 即为生成的cer文件,可直接点击安装
11、注意事项:
(1)&&&&生成证书的时间,如果IE客户端所在机器的时间早于证书生效时间,或者晚于有效时间,IE会提示“该安全证书已到期或还未生效”
(2)&&&&如果IE提示“安全证书上的名称无效或者与站点名称不匹配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是什么?”/“What
is your first and last name?”不正确引起的
12、遗留问题:
(1)如果AC主机不能通过域名查找,必须使用IP,但是这个IP只有在配置后才能确定,这样证书就必须在AC确定IP地址后才能生成
(2)证书文件只能绑定一个IP地址,假设有10.1.25.250&和&192.168.1.250&两个IP地址,在证书生成文件时,如使
用了10.1.25.250,通过IE就只能使用10.1.25.250&来访问AC-WEB,192.168.1.250是无法访问AC-WEB的。
jsp程序放到tomcat里面怎么才能不需要输入项目名称直接输入IP地址自动跳转到该页面?
| 分类: | 浏览1439次
我有更好的答案
提问者采纳
在tomcat的webapp里面root下面放一个默认的index.jsp,里面加自动跳转js。
window.location.href="你的项目地址";
前提是index.jsp需要在你的welcome list里面。
|采纳率37%
按默认排序|
其他2条回答
12:07|六级
把你工程的WebRoot改名为ROOT
把tomcat webapps下ROOT删掉
把你改名后的ROOT复制到webapps下
原ROOT为tomcat自带的欢迎界面,没用可以删除
我用JSF做了一个登录模块,就是登录成功转到成功页面,登录失败转到失败界面。但是测试时页面无反应?
| 分类: | 浏览102次
以下是几个页面的代码
index.html
default.html
default.htm
default.jsp
Faces Servlet
javax.faces.webapp.FacesServlet
Faces Servlet
faces-config.xml
com.bean.LoginBean
/index.jsp
/index.jsp
LoginBean.java
public class LoginBean {
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getPassword() {
public void setPassword(String password) {
this.password =
public String verify() {
if(!username.equals("lxl") ||
!password.equals("123456"))
return "fail";
return "success";
请输入您的信息
运行环境:jdk1.6+eclipse3.6+jboss-5.1.0
在浏览器中点击登录无任何反应,控制台没有任何报错!
哪位高手能帮助解决下,不胜感激!
我有更好的答案
提问者采纳
代码没发现有什么问题,web.xml文件中
Faces Servlet
你访问index.jsp文件是怎么访问的?
我一般是设置成
Faces Servlet
访问index.jsp是地址栏写成index.jsf。
LoginBean.java最好加一个构造函数,哪怕它是空的构造函数。
你可以下个断点,跟一下代码,看是不是调用了verify这个方法。
多谢,我找到问题所在了。
我访问index.jsp地址栏写成facees/,这样页面就没反应。
地址栏写成faces/index.jsp,这样页面就正常跳转了。
欢迎页面不是有index.jsp,为什么非要写上呢?
你访问index.jsp地址栏写成facees/,那可以理解成你在facees包下去找index.jsp,那真的就不一定能找到。
不过关于/faces/*,这个的作用是说/faces/下面的文件才能通过JSF解析,这一点已经验证了。我觉得你可以把你jsf的代码写在一个叫做login.jsp的文件中,而index.jsp这个文件作为一个跳板,里面写:
response.sendRedirect(request.getContextPath() + "/faces/login.jsp");
自动跳转到登录页面。
在实际项目中index.jsp有它其他的作用,具体要看情况(比如判断浏览器类型和版本等等)。
希望对你有所帮助,记得采纳答案啊
提问者评价
很有帮助,非常感谢!我又提了一个新问题,看能不能再帮我解决下。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。whm_666 的BLOG
用户名:whm_666
文章数:288
评论数:17
访问量:35394
注册日期:
阅读量:5863
阅读量:12276
阅读量:422007
阅读量:1110379
51CTO推荐博文
HTTP Status 500 -type Exception reportmessage&description The server encountered an internal error () that
prevented it from fulfilling this request.exception org.apache.jasper.JasperException:&org.apache.jasper.JasperException:&Unable&to&compile&class&for&JSP&org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:338)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)root cause org.apache.jasper.JasperException:&Unable&to&compile&class&for&JSP
org.apache.pile(JspCompilationContext.java:597)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)root cause java.io.FileNotFoundException:&D:\Tomcat&6.0\work\Catalina\localhost\Expulsion-Search\org\apache\jsp\index_jsp.java&(拒绝访问。)
java.io.FileOutputStream.open(Native&Method)
java.io.FileOutputStream.&init&(Unknown&Source)
java.io.FileOutputStream.&init&(Unknown&Source)
org.piler.setupContextWriter(Compiler.java:291)
org.piler.generateJava(Compiler.java:230)
org.pile(Compiler.java:347)
org.pile(Compiler.java:327)
org.pile(Compiler.java:314)
org.apache.pile(JspCompilationContext.java:589)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)note The full stack trace of the root cause is available in the
Apache Tomcat/6.0.26 logs.Apache Tomcat/6.0.26访问tomcat6.0下发布的某jsp学籍程序运行不稳定的原因:主要是访问量过大而产生日志满了,导致访问不稳定,主要通过两种方法解决:一种是删除运行下的程序日志,另一种是对tomcat做相关日志的配置。本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 tomcat jsp 的文章

 

随机推荐