我是先前发实习的 有认识我的么
我再看公司一个框架 是用SSH
我的理解是 他们直接用EXT.AJAX.REQUEST 直接访问动作了 基本都这样
我想自己搭这个框架的时候 却发声了错误
就是 我访问什么都不成功 包括没有参与动作的 index.jsp 都访问不了
我发几个配置文件给大家看看 求指导
第一个Struts.xml
<!-- 是否显示详细错误信息 -->
<constant name="struts.devMode" value="true" />
<!-- 国际化资源文件名称 -->
<constant name="struts.custom.i18n.resources" value="i18n" />
<!-- 是否自动加载国际化资源文件 -->
<constant name="struts.i18n.reload" value="false" />
<!-- convention类重新加载 -->
<constant name="struts.convention.classes.reload" value="true" />
<!-- 浏览器是否缓存静态内容 -->
<constant name="struts.serve.static.browserCache" value="true" />
<!-- 配置使用Spring管理Action -->
<constant name="struts.objectFactory" value="spring" />
<!-- 上传文件大小限制设置 -->
<constant name="struts.multipart.maxSize" value="-1" />
<!-- 主题 -->
<constant name="struts.ui.theme" value="simple" />
<!-- 编码 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.locale" value="zh_CN" />
<!-- 后缀 -->
<constant name="struts.action.extension" value="action" />
<!-- 结果资源的路径-->
<constant name="struts.convention.result.path" value="/WEB-INF/main/" />
<!-- 指定的action -->
<constant name="struts.convention.action.packages" value="com.Achilles.action"/>
<!-- URL资源分隔符 -->
<constant name="struts.convention.action.name.separator" value="_" />
<!-- 允许使用静态java方法 -->
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
<package name="basePackage" extends="struts-default">
<interceptors>
<interceptor-stack name="baseStack">
<interceptor-ref name="exception" /><!-- 将异常定位到一个画面 -->
<interceptor-ref name="alias" /><!-- 在不同请求之间将请求参数在不同名字件转换,请求内容不变 -->
<interceptor-ref name="servletConfig" /><!-- 提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问 -->
<interceptor-ref name="i18n" />
<interceptor-ref name="prepare" /><!-- 如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法(可以去掉) -->
<interceptor-ref name="chain" /><!-- 让前一个Action的属性可以被后一个Action访问,现在和chain类型的result(<result type=”chain”>)结合使用 -->
<interceptor-ref name="debugging" /><!-- 提供不同的调试用的页面来展现内部的数据状况 -->
<interceptor-ref name="scopedModelDriven" /><!-- 如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部 -->
<interceptor-ref name="modelDriven" /><!-- 如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中 -->
<interceptor-ref name="fileUpload" /><!-- 提供文件上传功能 -->
<interceptor-ref name="checkbox" /><!-- 添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox -->
<interceptor-ref name="multiselect" />
<interceptor-ref name="staticParams" /><!-- 从struts.xml文件中将<action>中的<param>中的内容设置到对应的Action中 -->
<interceptor-ref name="actionMappingParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<!-- 配置方法级别的校验 -->
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors> <!-- 配置默认拦截器栈 -->
<default-interceptor-ref name="baseStack" /> <!-- 未到找Action指向页面 -->
<default-action-ref name="errorPage" /> <action name="errorPage">
<result type="redirect">/WEB-INF/main/error/error_page_404.jsp</result>
</action>
</package>
<include file="struts-config-website.xml"></include>
我再看公司一个框架 是用SSH
我的理解是 他们直接用EXT.AJAX.REQUEST 直接访问动作了 基本都这样
我想自己搭这个框架的时候 却发声了错误
就是 我访问什么都不成功 包括没有参与动作的 index.jsp 都访问不了
我发几个配置文件给大家看看 求指导
第一个Struts.xml
<!-- 是否显示详细错误信息 -->
<constant name="struts.devMode" value="true" />
<!-- 国际化资源文件名称 -->
<constant name="struts.custom.i18n.resources" value="i18n" />
<!-- 是否自动加载国际化资源文件 -->
<constant name="struts.i18n.reload" value="false" />
<!-- convention类重新加载 -->
<constant name="struts.convention.classes.reload" value="true" />
<!-- 浏览器是否缓存静态内容 -->
<constant name="struts.serve.static.browserCache" value="true" />
<!-- 配置使用Spring管理Action -->
<constant name="struts.objectFactory" value="spring" />
<!-- 上传文件大小限制设置 -->
<constant name="struts.multipart.maxSize" value="-1" />
<!-- 主题 -->
<constant name="struts.ui.theme" value="simple" />
<!-- 编码 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.locale" value="zh_CN" />
<!-- 后缀 -->
<constant name="struts.action.extension" value="action" />
<!-- 结果资源的路径-->
<constant name="struts.convention.result.path" value="/WEB-INF/main/" />
<!-- 指定的action -->
<constant name="struts.convention.action.packages" value="com.Achilles.action"/>
<!-- URL资源分隔符 -->
<constant name="struts.convention.action.name.separator" value="_" />
<!-- 允许使用静态java方法 -->
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
<package name="basePackage" extends="struts-default">
<interceptors>
<interceptor-stack name="baseStack">
<interceptor-ref name="exception" /><!-- 将异常定位到一个画面 -->
<interceptor-ref name="alias" /><!-- 在不同请求之间将请求参数在不同名字件转换,请求内容不变 -->
<interceptor-ref name="servletConfig" /><!-- 提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问 -->
<interceptor-ref name="i18n" />
<interceptor-ref name="prepare" /><!-- 如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法(可以去掉) -->
<interceptor-ref name="chain" /><!-- 让前一个Action的属性可以被后一个Action访问,现在和chain类型的result(<result type=”chain”>)结合使用 -->
<interceptor-ref name="debugging" /><!-- 提供不同的调试用的页面来展现内部的数据状况 -->
<interceptor-ref name="scopedModelDriven" /><!-- 如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部 -->
<interceptor-ref name="modelDriven" /><!-- 如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中 -->
<interceptor-ref name="fileUpload" /><!-- 提供文件上传功能 -->
<interceptor-ref name="checkbox" /><!-- 添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox -->
<interceptor-ref name="multiselect" />
<interceptor-ref name="staticParams" /><!-- 从struts.xml文件中将<action>中的<param>中的内容设置到对应的Action中 -->
<interceptor-ref name="actionMappingParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<!-- 配置方法级别的校验 -->
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors> <!-- 配置默认拦截器栈 -->
<default-interceptor-ref name="baseStack" /> <!-- 未到找Action指向页面 -->
<default-action-ref name="errorPage" /> <action name="errorPage">
<result type="redirect">/WEB-INF/main/error/error_page_404.jsp</result>
</action>
</package>
<include file="struts-config-website.xml"></include>
<package name="websitePackage" extends="basePackage" namespace="/website/">
<interceptors>
<interceptor name="trimInterceptor" class="com.Achilles.common.system.TrimInterceptor"/>
<interceptor-stack name="adminStack">
<interceptor-ref name="trimInterceptor"/>
<interceptor-ref name="baseStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="adminStack" />
</package>
get set块 我就省了
public class CommonBaseAction extends ActionSupport implements Serializable {
/**
* 序列号
*/
private static final long serialVersionUID = -7847038996095839690L;
/**
* 初始化日志
*/
protected Logger logger = Logger.getLogger(this.getClass());
/**
* 缓存控制
*/
protected static final String PROGMA = "progma";
protected static final String NO_CACHE = "no_cache";
protected static final String CACHE_CONTROL = "Cache_Control";
protected static final String NO_STORE = "no_store";
protected static final String EXPIRES = "Expires";
protected static final Integer ZERO = new Integer(0);
/**
* html申明类型
*/
protected static final String TEXT_HTML = "text/html";
protected static final String TEXT_PLAIN = "text/plain";
protected static final String TEXT_XML = "text/xml";
protected static final String IMAGE_JPGE = "image/jpge";
/**
* 工程服务路径
*/
protected String webAppPath;
protected String logInfo;
protected static final String CHAR_ENCODE_UTF8 = "UTF-8";
protected String encode = CHAR_ENCODE_UTF8;
protected String id;
protected String [] ids;
public CommonBaseAction() {
super();
try {
webAppPath = ServletActionContext.getRequest().getContextPath();
} catch (Exception e) {}
}
/**
* 设置浏览器禁用缓存
*/
protected void setResponseNoCache(String type) {
getResponse().setContentType(type + ";charset=" + encode);
getResponse().setHeader(PROGMA, NO_CACHE);
getResponse().setHeader(CACHE_CONTROL, NO_CACHE);
getResponse().setHeader(CACHE_CONTROL, NO_STORE);
}
public String getEncode() {
return encode;
} public void setEncode(String encode) {
this.encode = encode;
}
protected void ajax(String content, String type) {
try {
setResponseNoCache(type);
getResponse().getWriter().write(content);
getResponse().getWriter().flush();
getResponse().getWriter().close();
} catch (IOException e) {
e.printStackTrace();
}
}
public class TrimInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 2365641900033439481L; @Override
public String intercept(ActionInvocation invocation) throws Exception {
Map<String, Object> parameters = invocation.getInvocationContext().getParameters();
for (String key : parameters.keySet()) {
Object value = parameters.get(key);
if (value instanceof String[]) {
String[] valueArray = (String[]) value;
for (int i = 0; i < valueArray.length; i++) {
valueArray[i] = valueArray[i].trim();
}
parameters.put(key, valueArray);
}
}
return invocation.invoke();
}
}
基本就是 配置好的话 就是
类名 IndexAction 有一个方法
public String index()
{
return "test";
}
jsp 名字 就是 index_test.jsp 类名和返回的名字 访问JSP
URL就是 项目名/包名/类名!方法名.action
但是我自己做老是失败
我觉得SPRING的配置文件在这里完全没有 但删除后却无法运行
求高手指教