用struts2搭建一个登录的例子

来源:互联网 发布:c语言指针是什么意思 编辑:程序博客网 时间:2024/05/29 23:45

今天学习了struts2的搭建,遇到不少的问题,终于一一解决,写在此处,以作备忘。

一、搭建struts2是重点,搭建这个框架有些麻烦。

1、 首先要下载struts2的一些组件,我下载的是现在最新的版本2.2.3.1,MyEclipse是9.1版本的。由于版本的不断升级,导致在搭建的过程中,和过去相对较旧的版本搭建有了一些差别,不过问题不是很大。这里有最新版本的struts2的下载地址:http://struts.apache.org/download.cgi#struts20111。


2、解压下载的组件,在lib目录下找到其中的以下组件:

commons-fileupload-1.2.2.jar

commons-io-2.0.1.jar

commons-lang-2.5.jar

commons-logging-1.1.1.jar

freemarker-2.3.16.jar

javassist-3.11.0.GA.jar(一定要将这个jar复制过去,这是和以前的版本不同的地方)

ognl-3.0.1.jar

struts2-core-2.2.3.1.jar

xwork-core-2.2.3.1.jar

将这些组件复制到建立的web工程下的WEB-INF/lib目录中,这些组件其实就是编译好的类文件。


3、接下来就是配置struts.xml文件。这个文件就好像起着一个过滤器的作用,用户发来的请求要经过该文件的过滤,根据用户请求中所请求的处理类型,来选择相应的处理逻辑。

以下是一个struts.xml文件的例子:

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5. <struts>  
  6.      <package name="test" namespace="/test" extends="struts-default">  
  7.         <action name="login" class="com.suo.Login" method="execute">  
  8.             <result name="success">/WEB-INF/result/success.jsp</result>  
  9.             <result name="fail">/WEB-INF/result/fail.jsp</result>  
  10.         </action>  
  11.      </package>  
  12. </struts>  

在struts.xml中,是采用package来管理各种action的。

package标签中的namespace指定了该包的命名空间。

extends是说当前这个包继承自struts-default包,可以在struts2-core-2.2.3.1.jar中的struts-default.xml文件中找到这个包,这个包被定义成抽象的,它不能包含有action。

包中的每一个action标签都和一个逻辑处理类进行了映射,name指定了这个action的名字,和包的namespace组合起来,可以直接访问这个逻辑处理类。

class指定了逻辑处理类的位置,method指定了进行逻辑处理类中进行逻辑处理的方法,这个execute很重要,而且它有固定的返回类型,就是String。

result标签就是根据逻辑判断之后,execute方法返回的字符串,根据返回的字符串,来进入到指定的页面。这里一定要把跳转的地址写清楚,明白。否则浏览器会报404的错误


4、根据struts.xml的配置,我们需要建立两个jsp文件:success.jsp和fail.jsp,还有一个Login类,以及一个登录页面的login.jsp文件。

在WebRoot目录下,建立login.jsp文件:

[html] view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2.   
  3. <html>  
  4.   <head>  
  5.       
  6.     <title>用户登录界面</title>  
  7.       
  8.     <meta http-equiv="pragma" content="no-cache">  
  9.     <meta http-equiv="cache-control" content="no-cache">  
  10.     <meta http-equiv="expires" content="0">      
  11.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  12.     <meta http-equiv="description" content="This is my page">  
  13.     <!-- 
  14.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  15.     -->  
  16.   
  17.   </head>  
  18.     
  19.   <body>  
  20.     <form action="/struts2/test/login" method="post">  
  21.         用户名:<input type="text" name="userName"/><br/>  
  22.         密码:<input type="password" name="password"/><br/>  
  23.         <input type="submit" value="提交"/>  
  24.     </form>  
  25.   </body>  
  26. </html>  

在src目录下,写Login类:
[html] view plain copy
  1. package com.suo;  
  2.   
  3. public class Login   
  4. {  
  5.     private String userName;  
  6.     private String password;  
  7.       
  8.     public String getUserName() {  
  9.         return userName;  
  10.     }  
  11.     public void setUserName(String userName) {  
  12.         this.userName = userName;  
  13.     }  
  14.     public String getPassword() {  
  15.         return password;  
  16.     }  
  17.     public void setPassword(String password) {  
  18.         this.password = password;  
  19.     }  
  20.       
  21.     public String execute()  
  22.     {  
  23.         if("suo".equals(this.userName) && "123".equals(this.password))  
  24.             return "success";  
  25.         else  
  26.             return "fail";  
  27.     }  
  28. }  

由于success.jsp和fail.jsp页面并不想让用户直接访问到,而是通过登录页面,经过逻辑判断之后,在根据判断结果跳转到相应的页面,所以我们将这两个页面放到WEB-INF目录下(代码略)。


5、配置web.xml文件,这也是很关键的一步,在启动服务器时,服务器要根据这个文件去进行初始化。而struts2和struts1启动有很大的不同,它是通过过滤器来启动的,而struts1是通过加载servlet来启动的,故应向web.xml中加入如下内容:

[html] view plain copy
  1. <filter>  
  2.         <filter-name>struts2</filter-name>  
  3.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  4.     </filter>  
  5.   
  6.     <filter-mapping>  
  7.         <filter-name>struts2</filter-name>  
  8.         <url-pattern>/*</url-pattern>  
  9.     </filter-mapping>  



经过这几步后,启动你的服务器,在地址栏输入登录界面的地址,一个简单的struts2框架就搭建好了……
原创粉丝点击