初学struts

1、struts2.2.1建立简单的项目需要八个包

commons-logging-1.0.4.jar

freemarker-2.3.16.jar

ongnl-3.0.jar

struts2-core-2.2.1.jar

xwork-core-2.2.1.jar

             commons-fileupload-1.2.1.jar

             commons-io-1.3.2.jar

         启动tomcat会出现如下错误(部分):

Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! Please add missed dependency!
	at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:165)
	... 48 more
Caused by: java.lang.ClassNotFoundException: javassist.ClassPool

经过上网查找资料解决办法如下:

帖子:http://topic.csdn.net/u/20100825/22/bc4344a1-9cd9-45a1-a12d-012a9a3e99b5.html

1、在使用struts-2.2.1时,需要引入javassist-3.7.ga.jar,而这个在struts-2.2.1\lib下是没有的,需要在struts-2.2.1\apps\struts2-blank-2.2.1.war下的lib中找。
2、把ognl-3.0.jar换成ognl-2.6.11.jar这个方式也可以。使用ognl-3.0.jar还得再搭配javassist-3.7.ga.jar

2、web.xml配置

<filter>
	<filter-name>struts2</filter-name>
	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

filter-class可以为:org.apache.struts2.dispatcher.FilterDispatcher(官方不推荐使用)

url-pattern可以为:*.action(但这样写struts2不会对其他的url进行拦截,如果用户访问struts2中的资源如:/struts/dojo/dojo.js,由于该文件实际不存在,其位于struts2的jar包中,如果不交给struts2的filter去处理,页面就会抛出404错误,所以推荐使用"/*").

3、struts配置文件头

 <?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="struts2" extends="struts-default">

          <global-results>
               <result name="error">/error.jsp</result>
           </global-results>
        <action name="query" class="action.BookAction">
             <result name="result">/result.jsp</result>
         </action>
 </package> 
</struts>

 

4、导入struts标签:<%@ taglib prefix="struts" uri="/struts-tags" %>

5、使用Ajax主题:<strutsx:head theme="ajax" />     主题标签不能使用<struts/>需加x:<strutsx/>以及添加  struts2-dojo-plugin-2.1.6.jar。否则后者会抛出Template /template/ajax/head.ftl not found

前者会抛出:

Expression parameters.parseContent is undefined on line 45, column 28 in template/ajax/head.ftl.

 7、更改.action后缀

1、在web.xml中filter配置struts.action.extension参数

<init-param>
		<param-name>struts.action.extension</param-name>
		<param-value>action</param-value>
	</init-param>

 2、在src下添加属性文件struts.poperties,在文件中修改:struts.action.extension=action

 3、在struts.xml中配置struts.action.extension属性

<constant name="struts.action.extension" value="action"></constant>

 

 

你可能感兴趣的:(apache,Ajax,freemarker,struts,dojo)