- 不用写设置文件
- 可以像脚本语言一样保存文件的同时编译,应用服务器不用在启动也可以识别。
- 下载后解压,Eclipse中导如sa-struts-tutorial工程
- 导入工程遇到的问题是工程
问题原因】:工程中classpath中指向的包路径错误
【解决办法】:右键项目名称 BuildPath ---> Configure Build Paht...中,然后上面有几个选项卡找到 Libraries中出现红色叉号的包为路径错误的包。到classpath中修改相应包的当前路径。然后回到eclipse中F5刷新工程。
下面两段为我解决此问题时在网上找的参考资料,可参阅:
你用myeclipse新建 web工程, 在工程目录下会生成一个 .classpath 配置文件,
里面是你工程里面引用的jar的配置。这个.classpath 对你的web工程没有什么影响
其实是给 myeclipse 识别的。你说的这种情况是因为 .classpath 文件里面
配置引用了某个jar,但是实际上你的 lib 里面并没有这个jar 所以才会有红色的提示。
你不用拿.classpath文件和你的jar一个个去找,你现在打开MyEclipse
右键单击你的web工程,找到 Build Path > Configure Build Paht...
> 然后上面有几个选项卡找到 Libraries。 这里看到的就是你工程里面引用的
所有的 jar , 看看是不是在某个jar图标上有个很小的黄色的感叹号?
如果有的话就没错了, 先选中这个jar, 点击右边的 Remove > 点击OK
解释一下:黄色的感叹号的jar,表示.classpath配置文件引用了jar,
但是实际上lib里面没有这个jar。 - 先安装Tomcat Launcher,它 是Eclipse Totale开发的Plugin。Seasar Project的Eclipse3.2的更新网站可以安装。Eclipse菜单[Help]-> [Software Updates] -> [Find and Install…] 使显示出Install/Update dialog.
- 配置Tomcat conf/server.xml 因为URL请求中会带有文字,防止乱码
<Connector port="8080" ... useBodyEncodingForURI="true"...
<Connector port="8080" ... URIEncoding="UTF-8"...配置context.xml 去掉Manager标签的注释 HOT deploy在使用session时可能会失效,是因为tomcat将session序列化,非序列化
<!-- Uncomment this to disable session persistence across Tomcat restarts --> <Manager pathname="" />
<?xml version="1.0"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <context-param> <param-name>sastruts.VIEW_PREFIX</param-name> <param-value>/WEB-INF/view</param-value> </context-param> <filter> <filter-name>encodingfilter</filter-name> <filter-class> org.seasar.extension.filter.EncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter> <filter-name>s2filter</filter-name> <filter-class> org.seasar.framework.container.filter.S2ContainerFilter </filter-class> </filter> <filter> <filter-name>hotdeployfilter</filter-name> <filter-class> org.seasar.framework.container.hotdeploy.HotdeployFilter </filter-class> </filter> <filter> <filter-name>routingfilter</filter-name> <filter-class> org.seasar.struts.filter.RoutingFilter </filter-class> <init-param> <param-name>jspDirectAccess</param-name> <param-value>false</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>s2filter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <filter-mapping> <filter-name>hotdeployfilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD<dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <filter-mapping> <filter-name>routingfilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>configFactory</param-name> <param-value> org.seasar.struts.config.S2ModuleConfigFactory </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>s2container</servlet-name> <servlet-class> org.seasar.framework.container.servlet.S2ContainerServlet </servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>s2container</servlet-name> <url-pattern>/s2container</url-pattern> </servlet-mapping> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>false</el-ignored> <page-encoding>UTF-8</page-encoding> <scripting-invalid>false</scripting-invalid> <include-prelude>/WEB-INF/view/common/common.jsp</include-prelude> </jsp-property-group> </jsp-config> </web-app>
ActionServlet是Struts使用的servlet
S2ContainerServlet是为了Seasar2初始化和终止处理的servlet。为了比ActionServlet后启动,请将Actionservlet的load-on-startup的值调大。
S2ModuleConfigFactory是为了实现无struts-config.xml开发的class.
struts-config.xml
<?xml version="1.0"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> </form-beans> <global-exceptions> </global-exceptions> <global-forwards> </global-forwards> <action-mappings> </action-mappings> <controller maxFileSize="1024K" bufferSize="1024" processorClass="org.seasar.struts.action.S2RequestProcessor" multipartClass="org.seasar.struts.upload.S2MultipartRequestHandler"/> <message-resources parameter="application" factory="org.seasar.struts.util.S2PropertyMessageResourcesFactory"/> <plug-in className="org.seasar.struts.validator.S2ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml"/> </plug-in> </struts-config>controller标签的processor属性中指定S2RequestProcessor。根据S2RequestProcessor用SAStruts的方法来处理请求。
multiProsessor属性中指定S2MultipartRequestHandler。
S2MultipartRequestHandler可以再file upload 发生sizeover异常时来获取异常。
message-resources标签中指定S2PropertyMessageResourcesFactory。通过S2PropertyMessageResourcesFactory可以让HOT识别message resource的变更。
plug-in标签中S2ValidatorPlugInを指定します。 通过S2ValidatorPlugIn可以让HOT识别验证用的注释的变更。
jsp-cofig标签的详细信息如下