环境: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出现了下面的问题:
type Status report
message /struts2Test/jsp/success.jsp
description The requested resource (/struts2Test/jsp/success.jsp) is not available.
下面是修改过后的代码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
以上。