关于Struts2的通配符的匹配问题

用SSH搭的项目
Struts.xml
package的namespcae没写,所以默认是"/"

<action name="emp-*" class="employeeAction" method="{1}" >
        <result name="{1}">/WEB-INF/pages/emp-{1}.jsp</result>
        <result name="success" type="redirectAction">emp-list</result>
</action>

employeeAction.java

 public String test() throws IOException{
                        return NONE;
 }

超链接测试

 <a href="emp-test?name=AAA">emp-test</a>

报错信息

 [16:25:13:385] [DEBUG] - com.opensymphony.xwork2.config.impl.AbstractMatcher.match(AbstractMatcher.java:117) - Attempting to match 'emp-test' to a wildcard pattern, 2 available
[16:25:13:385] [DEBUG] - com.opensymphony.xwork2.config.impl.AbstractMatcher.match(AbstractMatcher.java:122) - Value matches pattern 'emp-*'
[16:25:13:455] [WARN] - org.apache.struts2.dispatcher.Dispatcher.logConfigurationException(Dispatcher.java:601) - Could not find action or result: /emp-test?name=AAA
com.opensymphony.xwork2.config.ConfigurationException: There is no Action mapped for namespace [/] and action name [emp-test] associated with context path [].
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:192) ~[struts2-core-2.5.10.jar:2.5.10]
    at org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:63) ~[struts2-core-2.5.10.jar:2.5.10]
    at org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37) ~[struts2-core-2.5.10.jar:2.5.10]
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) ~[struts2-core-2.5.10.jar:2.5.10]
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:554) [struts2-core-2.5.10.jar:2.5.10]
    at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81) [struts2-core-2.5.10.jar:2.5.10]
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:143) [struts2-core-2.5.10.jar:2.5.10]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [catalina.jar:9.0.0.M18]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [catalina.jar:9.0.0.M18]
    at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) [log4j-web-2.9.0.jar:2.9.0]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [catalina.jar:9.0.0.M18]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [catalina.jar:9.0.0.M18]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [catalina.jar:9.0.0.M18]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.0.M18]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475) [catalina.jar:9.0.0.M18]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [catalina.jar:9.0.0.M18]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) [catalina.jar:9.0.0.M18]
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) [catalina.jar:9.0.0.M18]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:9.0.0.M18]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) [catalina.jar:9.0.0.M18]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495) [tomcat-coyote.jar:9.0.0.M18]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:9.0.0.M18]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767) [tomcat-coyote.jar:9.0.0.M18]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1354) [tomcat-coyote.jar:9.0.0.M18]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.0.M18]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_121]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_121]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.0.M18]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]

然后我尝试在
struts.xml里加了

 <action name="emp-test" class="employeeAction" method="test">
   </action>

然后居然就不报错了,惊了,这是为什么

接着又试验了其他的
employeeAction.java

  public String list(){

        System.out.println("list");
        return NONE;
   }

   public String list2(){

        System.out.println("list2");
        return NONE;
   }

struts.xml

 <action name="emp-*" class="employeeAction" method="{1}" >
            <result name="{1}">/WEB-INF/pages/emp-{1}.jsp</result>
            <result name="success" type="redirectAction">emp-list</result>
  </action>

超链接

<a href="emp-list">emp-list</a>
<a href="emp-list2">emp-list2</a>

点list没问题
点list2就报错
惊了,这是什么鬼,
跪求大神指导

4个回答

自己解决了,给出解决方案
Struts2.5的行如【test-*】这样的通配符中的【*】只能匹配 delete,list,input,save等少量的关键字,
底层原因不明

Tommy____
Tommy____ 在struts2.3之前的版本,正常的配置就可以了,但在struts2.3版本之后,使用通配符调用方法时,内部会验证是否允许访问该方法,所以要加上 <allowed-methods>方法名1,方法名2…</allowed-methods>代码。
一年多之前 回复

http://blog.csdn.net/liu578182160/article/details/17266879

重点:
反复确认之后,还是没找到错误

找度娘,好多种解决方案,木有一个可以解决我的问题的

最后发现是我的struts.xml是在src目录下,没有任何疑问

但是我的编译后classes文件默认却是在build目录下

不在WEB-INF下.......

这样它是找不到struts.xml文件的,报如上错误,也是情有可原的

最后,明确一点,struts.xm位于src下是为了编译后能找到struts配置文件,确保其在WEB-INF下才是根本!!!

更改eclipse web 项目默认编译输出路径:

eclipse中只能针对项目更改,因为其默认的是build目录下的,只能以项目更改:
项目右键 -》properties -》Java Build Path -》source -》Default output folder,选择你的路径,ok!

@学编程的司马光
谢谢你。
不过我用的是idea,项目是Maven管理的,struts.xml是放在resources下的
点list没问题,说明struts.xml位置应该是没问题的
点list2就报错

错误信息提示
[16:25:13:455] [WARN] - org.apache.struts2.dispatcher.Dispatcher.logConfigurationException(Dispatcher.java:601) - Could not find action or result: /emp-test?name=AAA

public String test() throws IOException{
return NONE;
}

的返回值,,在action中找不到与之相匹配的字符串 要么就你的Struts.xml中过滤器配置的方式不对!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
struts2 action通配符
问题描述: 在struts.xml里使用通配符定义了一个action_*,在<result>里配置了一个input,想在用其执行MyAction.myMethod方法,但是一直调用不到,不知为何!!! [code="java"] public class MyAction extends ActionSupport{ public String myMethod(){ return "some page String"; } } [/code] [code="java"] <action name="action_*" method="{1}" class="MyAction"> <result name="input" type="chain">想执行的MyAction的method方法</result> </action> [/code] [b]问题补充:[/b] [code="java"] <action name="action_*" method="{1}" class="MyAction"> <result name="input" type="chain">{1}.action</result> </action> [/code] 我是想在result中调用另外一个action方法,而不是同一个{1} 谢谢了! [b]问题补充:[/b] 问题二: 问题描述: 如何我执行action_save和action_edit,这两个action分别对应new.jsp和edit.jsp两个页面; 现在通过struts2的验证框架分别在执行两个方法前进行验证,如果验证失败,我在执行action_save时想跳转到new.jsp而执行action_edit跳转到edit.jsp; 而验证框架的处理是只要碰到验证失败就自动返回input字符串执行input对应的jsp; [code="java"] <action name="action_*" method="{1}" class="MyAction"> <result name="input">my.jsp</result> </action> [/code] [b]问题补充:[/b] 其实可以在result里使用通配符,但是这样执行的方法名要跟jsp名对应起来,就需要改action的代码了! [code="java"] <action name="action_*" method="{1}" class="MyAction"> <result name="input">{1}.jsp</result> </action> [/code]
struts2.3+spring4+hibernate4配置,struts.xml通配符出错
**struts.xml 的 action 通配符出错,使action链接不到** ![图片说明](https://img-ask.csdn.net/upload/201802/24/1519466334_354970.png) ![图片说明](https://img-ask.csdn.net/upload/201802/24/1519466345_172005.png) **这样子是可以的,但我想换成 以 / 分隔的形式就出错:** ![图片说明](https://img-ask.csdn.net/upload/201802/24/1519466469_176544.png) ![图片说明](https://img-ask.csdn.net/upload/201802/24/1519466482_788832.png) **这样子也是不行的:** ![图片说明](https://img-ask.csdn.net/upload/201802/24/1519466555_412483.png) **求助~~**
Struts2中的路径及通配符问题
``` package com.imooc.Controller; import com.opensymphony.xwork2.ActionSupport; public class ManageStudent extends ActionSupport { @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } public String add(){ System.out.println("add"); return SUCCESS; } public String delete(){ return "success"; } public String update(){ return SUCCESS; } public String selete(){ return SUCCESS; } } ``` 以下是项目文件 ![图片说明](https://img-ask.csdn.net/upload/201606/29/1467174208_397896.png) 下面是访问的jsp文件 ![图片说明](https://img-ask.csdn.net/upload/201606/29/1467174234_113347.png) 以下是struts.xml文件中的内容 ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="default" extends="struts-default"> <action name="*_*" class="com.imooc.Controller.ManageStudent" method="{2}"> <result >/page/{1}/{1}_{2}.jsp</result> </action> </package> </struts> ``` 为什么输入http://localhost/B010_StrutsTest/Student_add.action页面不能跳转啊?怎么修改?求大神指导迷津,谢谢!
关于shift or的模式匹配算法
设字母表为{a,b},给定带通配符的模式P=ab*bb,给出shift or 算法中的p的B表,以及扫描完ababb时的状态比特向量
对于Struts2页面跳转通配符的问题
<action name="Seller!*" class="com.kcan.action.SellerAction" method="{1}"> <result>/seller/{1}.jsp</result> </action> 对于这个配置, 我认为应该是没问题的, 比如Seller!sellerList, 应该会自动访问sellerList方法, 然后跳转到sellerList.jsp 但事实上一直报错。 错误信息是: HTTP Status 404 - /seller/.jsp type Status report message /seller/.jsp description The requested resource (/seller/.jsp) is not available. 这里, 通配符对于method生效了, 可以正常的访问到sellerList方法, 可川对于jsp的设置并没有生效。 为什么呢? 为什么拿不到? [code="java"] public String sellerList() { sellerList = sellerService.getSellerList(0, Constant.PAGE_SIZE); return SUCCESS; }[/code]
Struts2配置中的通配符
<action name="*"> <result>/WEB-INF/content/{0}.jsp</result> </action> 请教result里面{0}.jsp和{1}.jsp有什么区别么?都代表*么?
关于struts2.0配置返回页面的问题
struts能不能够动态的指定返回哪张页面?举个例子:比如说,url中带一个参数id,我根据这个id去查,需要返回哪张界面。id有很多,并且数目不固定(会增加),所以没办法在struts的配置文件中枚举。我想了下,用通配符的方式好像是可以实现的,但是跨部门合作,让别人按照这种方式指定文件的路径还是有点蛋疼。。
我在读取Struts2源码的时候,不了解ActionMapper怎样读取通配符的?
在读取Struts2源码的时候~ public ActionMapping getMapping(HttpServletRequest request, ConfigurationManager configManager) { ActionMapping mapping = new ActionMapping(); String uri = RequestUtils.getUri(request); int indexOfSemicolon = uri.indexOf(";"); uri = (indexOfSemicolon > -1) ? uri.substring(0, indexOfSemicolon) : uri; //去掉后缀 uri = dropExtension(uri, mapping); if (uri == null) { return null; } //解析出方法名和命名空间 parseNameAndNamespace(uri, mapping, configManager); //处理特殊的传递的参数,清除最后以。x或者。y作为后缀的属性,这个是为什么。难道是敏感词么? handleSpecialParameters(request, mapping); //最后返回过滤好的action的一些信息~这样的话,就能获取到Action的名称方法 return parseActionName(mapping); } protected ActionMapping parseActionName(ActionMapping mapping) { if (mapping.getName() == null) { return null; } //这个的意思是获取index!getindex.action的时候获取Action 的名称与方法 //现在我想问一下如果是通配符的时候怎样处理呢? //难道是需要通过读取struts.xml文件然后需找规律 if (allowDynamicMethodCalls) { // handle "name!method" convention. String name = mapping.getName(); int exclamation = name.lastIndexOf("!"); if (exclamation != -1) { mapping.setName(name.substring(0, exclamation)); mapping.setMethod(name.substring(exclamation + 1)); } } return mapping; } ****这个方法是解决 index!getindex.action的时候获取Action 的名称与方法的方法 但是如果配置文件中如果是 action name="user_*" class="com.test.action.UserAction" method="{1}"> <result>/user_{1}.jsp</result> </action> 这样的情况下呢?怎样获取action 与MethodName呢?****
struts2.1.8 action name 匹配
这几天使用 struts2 去做项目,发现一个很奇怪的问题, 我的配置 <package name="admin" extends="struts-default" namespace="/admin"> <action name="testname" class="com.chj.action.TestNameAction"> <result>/admin/newTest/newTest.jsp </result> </action> </package> 这样子 请求时候,尽让发生了 there is no action 后面把 testname 改成 testName 竟让成功了(以下为修改后,成功的配置) <package name="admin" extends="struts-default" namespace="/admin"> <action name="testName" class="com.chj.action.TestNameAction"> <result>/admin/newTest/newTest.jsp </result> </action> </package> 到后面开发也遇到过很多类似的问题,都使用了首字母大写,就可以访问,全小写就出错。 但是后面有个配置修改首字母大写也不行了,但是改成其他的字符就行了,例如 warning 发生 there is no action , aaa 可以访问 网上了找了些资料,比较有利的证据是有 1 使用了通配符,所以strtus2 匹配的时候出错 2 开启了 动态方法调用,strtus2 误把其actionName 当成 action了。 现在询问有没有哪位过来人,有没有遇到这种情况! [b]问题补充:[/b] 我的问题说白了就是, action 标签中的name 什么取某些值会发生 there is no action
struts2通配符出错,请帮我看看,问题在哪里
我用的环境:myclipse2015,jdk1.8,Tomcat7.0.72,Struts2 2.5.2 ![![![![![图片说明](https://img-ask.csdn.net/upload/201611/06/1478444116_8199.png)图片说明](https://img-ask.csdn.net/upload/201611/06/1478444108_825601.png)图片说明](https://img-ask.csdn.net/upload/201611/06/1478444099_600735.png)图片说明](https://img-ask.csdn.net/upload/201611/06/1478444086_601592.png)图片说明](https://img-ask.csdn.net/upload/201611/06/1478444076_829240.png)
带有通配符的字符串匹配算法
C/C++实现 之前面试。遇见一个字符串匹配问题。 大概是这样的: 正常的匹配就不说了, 第一,'*'可以代表连续多个字符。 第二,’a+'可以代表‘aa', 'aaa', 'aaaa'.....类推。 第三,’.‘代表一个任意字符(非*, +); 字符串str,模式串假设名为mdstr; 我当时想的是str,mdstr都是有'*",等符号的。 后来觉得str应该没有* 我给出了一个可行的算法。暂不提,后来面试官说。两个字符串都允许*. 谁能提供一个思路。考虑效率。
python 路径匹配中的 *和**通配符用法
通俗易懂一点 为什么 PurePath("a/b.py").match("\*.py") True 运行结果是True,单个"星号"成功匹配了a/b 。 不是说单个星号不能匹配斜杠的吗 PurePath("/a/b/c.py").match("a/\*\*/\*.py") False 运行结果是False,两个"星号"没有成功匹配 b/c。。 不是说两个星号可以匹配多级目录吗
通配符的匹配很全面, 但无法找到元素 'tx:annotation-driven' 的声明?
求解:本人在做spring-service层单元测试的时候报错:通配符的匹配很全面, 但无法找到元素 'tx:annotation-driven' 的声明。网上找方法,头部声明也加了,版本也指定过,还是无解。 * ![图片说明](https://img-ask.csdn.net/upload/201908/16/1565947593_248399.jpg) * ![图片说明](https://img-ask.csdn.net/upload/201908/16/1565947476_486097.jpg) * ![图片说明](https://img-ask.csdn.net/upload/201908/16/1565947493_162214.jpg)
struts2.5.8动态方法调用使用通配符无效
我在使用struts2.5.8时,在jsp页面中: ```jsp <s:form namespace="/zzw" action="login"> <s:textfield name="username" key="username"/> <s:textfield name="password" key="password"/> <s:submit key="login" action="login_login"/> <s:submit key="register" action="login_register"/> </s:form> ``` 在struts.xml中: ```xml <constant name="struts.enable.DynamicMethodInvocation" value="false"/> <package name="zzw" extends="struts-default" namespace="/zzw" strict-method-invocation="false"> <global-allowed-methods>regex:.*</global-allowed-methods> <action name="login_*" class="com.zzw.action.LoginAction"> <result name="success">/result.jsp</result> </action> </package> ``` 结果是点击jsp页面的登录/注册页面,跳转到了LoginAction,但没有调用相应的方法(login或register),求大神帮下忙,谢谢!
问一个struts2的问题
struts.xml 如下 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.i18n.encoding" value="GBK" /> <constant name="struts.devMode" value="true" /> <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant> <package name ="animal" extends ="struts-default" namespace="/animal" ><!-- <global-results> <result name="error"> /login/error.jsp</result> <result name="input"> /login/error.jsp</result> </global-results> --><action name ="*_*" class="com.lion.king.action.animal.{1}Action" method="{2}" > <result name="success">/animalManager/{1}_{2}.jsp</result> <result name="error"> /login/error.jsp</result> <result name="input"> /login/error.jsp</result> </action> </package> </struts> action类如下 package com.lion.king.action.animal; import java.util.Map; import org.apache.struts2.interceptor.RequestAware; import com.lion.king.model.animal.Animal; import com.lion.king.service.animal.AnimalService; import com.opensymphony.xwork2.ActionSupport; public class AnimalAction extends ActionSupport implements RequestAware{ private AnimalService as; public AnimalService getAs() { return as; } public void setAs(AnimalService as) { this.as = as; } private Map request ; public void setRequest(Map<String, Object> request) { this.request=request; } public String add(Animal a) { return SUCCESS; } public String delete(long[] ids) { return SUCCESS; } public String select(Animal a) { request.put("animals", as.select(a)); return SUCCESS; } public String update(Animal a) { return SUCCESS; } } [color=blue][/color] 我想问的是 在<action name ="*_*" class="com.lion.king.action.animal.{1}Action" method="{2}" >中 method属能不能制定带参数的方法,貌似用通配符配的时候select(Aniaml a) 方法是带参数的,所以就出错! 如果能写带参数的方法该如何做????
struts2 使用*_* 通配符配置,如何交给spring管理
按照以往的开发方式。struts的映射都是在xml中写出配置,然后class写别名交给spring管理,现在项目使用*_*的配置,无法写别名了,这样的写法怎么才能把struts2交给spring管理?
有人可以解决一下关于“ 通配符的匹配很全面, 但无法找到元素 'tx:advice' 的声明”的问题
``` xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/aop/spring-aop-3.1.xsd"> <!--配置sessionFactory 将数据源注入,并设置hibernate的基本配置 --> <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/hiber_first"></property> <property name="username" value="root"></property> <property name="password" value="chen007"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="datasource"></property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <!-- 配置映射文件, --> <property name="mappingResources" value="cn/cc/vo/Person.hbm.xml"/> </bean> <!--将SessionFactory 注入DAO,拥有sessionFactory容器后才容易进行presistent操作 --> <bean id="userDao" class="cn.cc.springIntergratingHibernate.IUserDaoImpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!--设置事务管理,需要注入sessionFactory --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> <!--配置事务增强处理器 --> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> 所有以get开头的方法只有只读权限 <tx:method name="get*" read-only="true"/> 其他方法使用默认设置 <tx:method name="*"/> </tx:attributes> </tx:advice> <aop:config> <!--指定在IUserDao切入点 使用txAdvice事务增强处理--> <aop:pointcut expression="bean(IUserDao)" id="userPointcut"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="userPointcut"/> </aop:config> <!--配置事务拦截器 transactionInterceptor,需要注入TransactionManager --> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <!--为事务拦截器注入一个管理器 --> <property name="transactionManager" ref="transactionManager"></property> <property name="transactionAttributes"> <!--定义事务传播属性 --> <props> <prop key="save">PROPAGATION_REQUIRED</prop> <prop key="delete">PROPAGATION_REQUIRED</prop> <prop key="check">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!--定义BeanNameAutoProxyCreator代理,自动创建相关bean --> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <!--指定哪些bean自动生成代理 --> <property name="beanNames"> <list> <value>userDao</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean> </beans> ``` 可以看出来nameSpace已经导入了相关的应用了,但还是找不到
“cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 'tx:advice' 的声明。”
为什么我已经加了:“ http://www.springframework.org/schema/tx“”http://www.springframework.org/schema/tx/spring-tx.xsd” 还是显示错误:“ Line 31 in XML document from class path resource [com/statement/xml/XMLstatementapplicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 31; columnNumber: 65;cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 'tx:advice' 的声明。” ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframwork.org/schema/aop" xmlns:tx="http://www.springframwork.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <context:component-scan base-package="com.statement"/> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriveManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/springtest?characterEncoding=utf8"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransaction Manager"> <property name="dataSource" ref="dataSource" /> </bean> <tx:advice id="myAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="*"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut expression="execution(* com.statement.service).*.*())" id="txPointCut"/> <aop:advisor advice-ref="myAdvice" pointcut-ref="txPointCut"/> </aop:config> </beans> ``` ```
刚学Struts2,访问index.jsp页面正常,访问login.jsp页面就报错
我用的是通配符的方式访问,输入 http://localhost:8088/TestStruts/TestStruts_index.action时可以跳转到index.jsp页面, 但输入http://localhost:8088/TestStruts/TestStruts_login.action时, 就报There is no Action mapped for namespace [/] and action name [TestStruts_login] associated with context path [/TestStruts]. struts.xml代码如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <include file="struts-default.xml"></include> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <constant name="struts.action.extension" value="do,action"></constant> <constant name="struts.serve.static.browserCache" value="false"></constant> <constant name="struts.configuration.xml.reload" value="true"></constant> <constant name="struts.devMode" value="true"></constant> <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant> <package name="default" namespace="/" extends="struts-default"> <action name="*_*" method="{2}" class="com.test.action.{1}" > <result name="login">/login.jsp</result> <result name="index">/{2}.jsp</result> </action> </package> </struts> 麻烦大神解惑~
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100) 【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问