Java之Structs框架初探

今天是小白第一次自己的接触Struts框架,因为网上的资料都是从Structs2开始,跟Structs1完全不同,因此,小白直接跳过1学习版本2的搭建,废话不多说,直接开始。

首先要搭建框架,就肯定要导入一定的资源包,通过小白的查询,知道下面的几个包为必要的。

这里要注意的是,这些包要直接放在web-info下的lib文件夹中,不能嵌套,否则会找不到。还有就是版本的问题,小白之前因为选择了2.4版本,会报一个错误 java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils异常。换掉之后,就解决了。

下面是最简单的Stucts.xml的配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC   
        "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"   
        "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="Stucts" namespace="/userAction"  extends="sessiondefault">
		<action name="doLogin" class="test.action.userLogin" method="doLogin">
			<result name="success">/pages/operate.jsp</result>
			<result name="error">/pages/info.jsp</result>
		</action>
	</package>
</struts>

 然后还需要在web.xml配置文件中添加配置文件:如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
   <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>
  
</web-app>
View Code

接下来,运行的时候,发现 这个问题   FilterDispatcher <<< is deprecated! Please use the new filters!

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  是因为这里使用了旧版本2的配置文件,只需要在这里改成这个就好了。

继续调试,一切就绪之后,我进行了运行,可是突然报找不到对应的map 跟 action 匹配的地方,可是我命名所有的地方都是对应的,不可能出现什么问题的,经过将近两个小时的折磨,将项目重新删掉之后,重新做,才发现原来是因为structs.xml这个配置文件名字是固定的,我没注意将其首字母大写成了Structs.xml以至于没有正确的加载这个配置文件(但是编译的时候,apache是不会找到这个错误的!)

最简单的structs一个小例子完成了,接下来,我们在学习的过程中,一定会涉及到查看structs类的源码和帮助文档,接下来的操作便是可以在项目中可以直接查看的做法。

在web app libraries 中,找到structs2_core的jar包,然后鼠标右击,选择properties属性,为java source attachment 跟 javadoc location选择对应的文件夹路径,为别是

struts-2.3.16.3srccoresrcmainjava  和struts-2.3.16.3docs 两个文件夹目录。

 小白在公司里面又没事做了一次上面的操作,可是发现小白又遇到了奇葩的问题。

Caused by: Parent package is not defined: sessiondefault - [unknown location]

这一句为关键的代码,最后终于知道问题所在,是我再package的extends属性中写了sessiondefault 虽然之前我不知道这是什么意思,但是我照着做没有任何问题,为了能运行,我只能先将属性改成struts-default了,改完之后,可以无错误运行了,希望如果有人知道这个问题的话,可以在留言或者回复中告诉小弟,谢谢。


作者:wangqc
出处:http://www.cnblogs.com/wangqc/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-wangqc

原文地址:https://www.cnblogs.com/wangqc/p/Structs2_1.html