`
PerfectPlan
  • 浏览: 121080 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多

 

Struts2入门

 

Struts2是基于Struts 和webwork形成的,比Struts1提供了更多更强大的功能。(可以说Struts2是webwork的衍生)

一、使用Struts2所必须的jar包

:commons-filoupload-1.2.1.jar

commons-io-1.3.2.jar

commons-logging-1.0.4.jar

ognl-3.0.jar //对象表达语言

strus2-core-2.2.1.1.jar//struts2核心库

xwork-core-2.2.1.1.jar

freamarker-2.3.16.jar //从struts2.0开始需要此jar包

javassist-3.7.ga.jar

 

二、创建Struts2的配置文件

:在 src下面创建struts.xml //导入struts2.0.dtd 它在struts2-core-2.2.1.1.jar的目录下

/*为什么要在src下面创建struts.xml

因为Struts2框架真正的配置文件在项目中的classes文件中

创建在src下面是为了让IDE能够自动拷贝到Struts真正执行的配置文件中

*/

 

//如何配置struts.xml
		<?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">
        //继承了struts-default.xml
	//配置一个Action对象
	/*package 中name的值无任何实际意义 可以用于其它packeage的继承*/
	<action name="login" class="org.viancent.action.LoginAction">
		<result name="success">/result.jsp</result>
/*
		result标签中还有一个属性Type用于指定跳转的类型它默认的是使用dispathcer 请求转发redirect则是重定向等等在struts-default.xml都有定义
*/
	</action>
</package>	
</struts>

//在struts2 在web.xml的配置如下:struts2需要配置在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> //注意啦,这里不能用"/*.action" (能够使用“*.action” 但是只有在项目中没有Jsp使用struts2标签的时候才能使用,否则会抛出异常)
</filter-mapping>

 

//在LoginAction类中的信息
		public class LoginAction {
		private String username;  
		/*
		当表单将数据发送进来后,表单中的属性名会与LoginAction中的
		(set+表单元素的名称的方法 如:setUsername()方法对应
		<input type="text" name="userName" id="userName">元素)进行比对,
		*/		
		private String password;
		//如果相同则将数据信息赋值给该属性,并且将数据信息保存在request作用域中

		public String getUsername() {
			return username;
		}

		public void setUsername(String username) {
			this.username = username;
		}

		public String getPassword() {
			return password;
		}

		public void setPassword(String password) {
			this.password = password;
		}

		public  String execute() {
			return "success";
		}
		}

//在index.jsp中的信息为:

 

<body>
	<form action="login.action"> 
       //这里填写struts.xml 文件中配置的与之处理相关的Action 标签的name属性的值+.action
		username:<input type="text" name="username" id="username" />
		<br />
                password:<input type="password" name="password" id="password"/>
		<br />
		<input type="submit" value="submit" />
	 </form>
</body>

//配置一个result.jsp 显示结果页面

//启动服务器

		//在tomcat apache-tomcat-6.0.14服务器中config文件夹中的service.xml
		/*文件中的<host>标签中添加项目启动信息
		<Context path="/struts2" docBase="C:\Users\Administrator\Workspaces\MyEclipse 8.5\Struts2\WebRoot"
		reloadable="true"/>
		reloadable :设置当工程有改动的时候是否自动加载
		path: 浏览器访问时需要的路径
		docBase:启动的项目路径 对应WebRoot路径
		*/

//在浏览器中

//使用 http://localhost:8080/struts2/ 访问index.jsp界面

//struts2 项目中可能出现的异常

a):java.lang.reflect.InvocationTargetException
Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! Please add missed dependency!
解析:这个问题说明项目中缺少javassist-3.7.ga.jar 此异常常出现在struts2.2.1.1版本中老版中将此jar包封装在struts2库中所以不会出现此类异常

b):There is no Action mapped for namespace / and action name login
解析:这个问题出在服务器没有找到对应的acion对象 可能出现的原因有一下几点:
1.struts.xml 写错了,大小写都会去区分
2.url访问的ation 的名称错误
3.struts.xml的位置错误

以前写的东西,贡献出来尽一点绵力吧。后续会有更多文章,希望与大家互相学习。如果有错误请不吝赐教。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics