看了struts2的视频,跟着把它的项目放到idea里想改一改运行起来,之前现在eclipse里跑成功了,于是想在idea里试试,在eclipse里很简单,服务器启动后,webapps会多一个项目名的文件夹,我想在idea里是不是得弄个war包出来放进去,于是考进idea’以后,就一发不可收拾的弄了一下午到现在晚上八点多。
有jar包没有引入的问题,很多,不想说了,现在总结正确的:
1.按照一般的要求,WEB-INF下应该有lib和class文件夹,用于放jar包和编译后的class文件。(lib下的jar包放好后,要右击add to library)
2,最重要的全部在project structure里面’:
首先project:
然后Modules:
找到第二个paths,按照图操作
结果:
然后dependencies:默认,因为struts2是jar包右击add to library后起的名字。
Libraries:
暂时好像不记得。就是jar包位置,也是显示add to library’时起的名字
Facts:
Default的那个必须选上,不然下面红框的内容会标红报错,报错后找到这里勾选上即可:点击铅笔即可进行勾选。
Artifacts:就是生成的war包的名字,说错了,看了下,根本没找到所谓的war包,这点很郁闷,没有war包,tomcat到底拿的什么在运行??之前就是因为搜索war包如何生成搞了好久,现在他么告诉我不用war包!
下面有个problem,有什么错可能会在这里提示,有Fix就点击。然后配置tomcat和artifacts就行了。
另外:
Out里面的内容真心不知道这么复杂干嘛的,不想知道。
然后:
struts.xml是在src目录下:
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>
Demo1.jsp:
Suc.jsp:
HelloAction:
流程就是:访问demo1.jsp,然后struts.xml会识别请求,找到action里的方法,方法返回的ok又被struts.xml再次识别,访问suc.jsp,完成!
之前右击add to library 的jar还没引入的意思吗?
最后,webapp下没有东西,东西在下面的work下的。。。的localhost下的struts2,里面有demo1.jsp和suc.jsp的class文件:
思考问题:struts2是个web项目吧?tomcat到底怎么执行的,为何没有对应的war包?
只在work里有,而eclipse是在webapp里有个文件夹,也不是war包?好头疼这个问题。
切记:不能把传智播客的struts项目直接弄到idea里,文件结构都不一样的,必然出错。
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter