struts2访问WEB-INF目录下的jsp文件

环境:struts-2.3.14+apache-tomcat-6.0.18

初学struts2,搭建了一个环境,但是怎么也访问不了jsp文件,发了讨论帖才知道是什么原因,又是路径的问题,⊙﹏⊙...

src/struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name = "action" extends = "struts-default">
		<action name = "loginAction" class= "action.LoginAction">
			<result name = "success">/jsp/success.jsp</result>
			<result name = "failure">/jsp/failure.jsp</result>
		</action>
		
		<action name = "indexAction" class= "action.IndexAction">
			<result name = "success">/jsp/login.jsp</result>
		</action>
	</package>
</struts>
直接浏览器访问action出现了下面的问题:

HTTP Status 404 -/struts2Test/jsp/success.jsp

type Status report

message /struts2Test/jsp/success.jsp

description The requested resource (/struts2Test/jsp/success.jsp) is not available.

Apache Tomcat/6.0.18

经过前辈的解答,是路径的问题,访问/WEB-INF目录下的资源时,需要确切的指明要访问的文件路径。

下面是修改过后的代码src/struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name = "action" extends = "struts-default">
		<action name = "loginAction" class= "action.LoginAction">
			<result name = "success">/WEB-INF/jsp/success.jsp</result>
			<result name = "failure">/WEB-INF/jsp/failure.jsp</result>
		</action>
		
		<action name = "indexAction" class= "action.IndexAction">
			<result name = "success">/WEB-INF/jsp/login.jsp</result>
		</action>
	</package>
</struts>
这样就不会出现上述的问题了。

这里需要说明一下的是,struts2中的/WEB-INF目录中的文件对客户端来说不是可以直接访问的,必须通过服务器端的action来实现。

如果想直接通过url访问的话,只要把jsp放在WebContent或者WebRoot下就行了。

对于上面的问题,struts1是不存在的,struts1中可以直接用url访问/WEB-INF下面的文件。

另外对于今天遇到的其他问题也一并写下。

一个是struts2的标签库在哪,答案是它定义在struts2库文件struts2-core-2.3.14.jar里面的文件META-INF/struts-tags.tld里面,所以不需要想struts1那样手动配置web.xml文件。

%@ taglib prefix="s" uri="/struts-tags" %>
一个是标签库显示乱码问题,如下面的“提交”俩个汉字显示为乱码。
<s:submit value = "提交">
原因是jsp的编码格式pageEncoding没有写。
<%@page contentType = "text/html; charset = UTF-8" pageEncoding="UTF-8"%>
这里的contentType与pageEncoding的区别是这样的。

contentType的charset是指服务器发送给客户端时的内容编码,即是从servlet输出jsp内容的格式。

pageEncoding是jsp文件本身的编码格式。

感谢前辈的解答,有不足的地方还请各位指正。

讨论帖链接:http://www.oschina.net/question/1050450_111373

参考资料:http://wenku.baidu.com/view/991810808762caaedd33d492.html

以上。

你可能感兴趣的:(struts2,jsp访问)