`
沈冠军
  • 浏览: 110089 次
  • 性别: Icon_minigender_1
  • 来自: 玉林
社区版块
存档分类
最新评论

struts2学习之入门

阅读更多



       前段时间学过一下struts1,其实也就是配置web工程成功而已,但是过了一个多月后,当再想继续学习的时候,感觉和从头开始没有什么两样了,为什么?因为我没有总结,没有形成自己的一套体系。胡-哥说过,技术博客为什么要发表? 不发表就没有留存, 没有留存就没有记忆,没有记忆就没有历史,没有历史就没有存在,没有存在就没有意义!所以我决定了在以后的学习中都要把学到的东西记录下来,让这些见证自己的成长。
      话说多了,前两天接触了struts2, struts2给我第一的感觉就是比struts操作简单,省去了很多步骤,更灵活(其实struts1我只是学过几天而已,感觉特别繁琐)。

     今天就记录第一个怎么配置第一个struts工程。
           1、 下载struts类库http://www.apache.org/ 我用的是2.1.6版本,myeclipse8.6
           2、 创建web工程,将一些必要的类库拷贝到WebRoot目录的lib下。下载到的类库很多,其中必需的有7个:
                (1)commons-fileupload-1.2.1.jar
                (2)commons-io-1.3.2.jar
                (3)commons-logging-1.0.4.jar
                (4)freemarker-2.3.13.jar
                (5)ognl-2.6.11.jar
                (6)struts2-core-2.1.6.jar
                (7)xwork-2.1.2.jar
          3、编写配置文件struts.xml文件,此文件要放在src目录下

              

<?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>
	<package name="struts2" extends="struts-default">
		<action name="login" class="com.champion.action.LoginAction">
			<result name="sucess">/index.jsp</result>
		</action>
	</package>
</struts> 

           说明:struts2和strus1在配置文件就有很大的不同,它的配置信息比struts1简单多了,它一<struts>开头,里 面有<bean>,<struts>,<include>,<package>四个子标签,现在我只到到过<package>这个标签,所以就分析一下 这个标签的有什么用,<package>的name属性可以随便取,extents表示继承stuts-default.xml这个配置文件(这或许就是struts2配置信息比较简单吧,个人的猜想而已).<package>标签下也有很多个子标签,经常用到的是<action>,这个标签看它的名字就可以知道是什么意思了,在这里,我定义了一个name="login"的动作,它对应的类为

class="com.champion.action.LoginAction",<action>标签下有个<result>标签,它的作用就是在动作类处理后需要处理的结果。关于这个配置的文件就说这么多,以后再慢慢深入…

          4、有了这配置文件还是不行的,必须得让tomcat知道有个文件,它才会把struts2的类库加载到内存来,所以还得在web.xml里面配置。

         

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
	<welcome-file-list>
		<welcome-file>login.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>

 

          说明:这个文件的配置和struts1也有明显的不同,struts1采用的是动作控制的servlet来配置,而这个是通过过滤器来控制的,只要配置的有<filter>和<filter-mapping>这两个标签,其中的<filter-class>是固定的,<filter-name>要一致,否则将无法找到对应的过滤器,<url-pattern>/*<url-pattern>表示所以的请求都交给这个过滤器过滤。

          5、编写LoginAction.java代码

     

package com.champion.action;

public class LoginAction {
	private String username;
	private String userpwd;

	public String getUsername() {
		return username;
	}

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

	public String getUserpwd() {
		return userpwd;
	}

	public void setUserpwd(String userpwd) {
		this.userpwd = userpwd;
	}

	public String execute() throws Exception {
		return "sucess";
	}

}

             说明:这个动作类里面有两个属性username和userpwd以及他们的set和get方法,这两个属性名称要和页面的输入框name属性值相同,还有一个方法execute(),这个方法是struts2内置的,它返回一个字符串类型,当在页面请求login.acion时,它就会自动将页面的值赋给这两个属性。

           6、编写login.jsp页面

   

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<html>
	<head>
		<title>用户登录</title>
	</head>
	<body>
		<form action="login.action" method="post">
			用户名:
			<input type="text" name="username" />
			<br>
			密 码:
			<input type="password" name="userpwd" />
			<br>
			<input type="submit" value="提交" />
			<input type="reset" value="重置" />
		</form>
	</body>
</html>

          说明:可以看到两个输入框的name属性值和LoginAction类中的属性值一致,表单的action="login.action",当

表单提交时,后台就会调用LoginAction这个类。

        7、编写index.jsp页面,表示登录成功后需要显示的页面

   

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<html>
  <head>
    <title>个人信息中心</title>
  </head>
  <body>
    用户名:${requestScope.username }
    密     码:${requestScope.userpwd }

  </body>
</html>

           说明:这个页面用来EL表达式来显示用户的信息,其他的不多说了。

       8、启动工程,看结果,有图有真相。

            在login.jsp页面输入如下:             
         

            
             提交后在index.jsp页面输出如下:               
           

            9、整个流程是怎么样的

 



 
 
          说明:在index页面中的代码,用户名:${requestScope.username }

                                                    密   码:${requestScope.userpwd }
 

                    struts会自动调用LoginAction中的属性的get方法,最终显示在页面上。

 

          

          10、小结一下

 

            struts2刚接触几天,只是明白了这个整个流程,虽然自己很明白这个流程,但是很难用言语来准确的描述,就像上边的流程图一样,画了半个小时,最终的结果也不清不楚的,自己看这都晕,以后还是得多补充一下辅助工具使用方面的知识才行了,要做程序员就必须得用工具来表达自己的思想,要不技术再厉害,也可能无处施展(声明一下,我的技术不厉害)。

 

       

 

 

 

 

 

 

  • 大小: 2 KB
  • 大小: 956 Bytes
  • 大小: 11.8 KB
分享到:
评论
2 楼 沈冠军 2011-05-01  
freewxy 写道

1 楼 freewxy 2011-04-29  

相关推荐

Global site tag (gtag.js) - Google Analytics