greatjone

BlogJava 联系 聚合 管理
  7 Posts :: 24 Stories :: 3 Comments :: 0 Trackbacks

采用Struts2.0.14做的一个登陆验证示例
步骤:
1.在Web工程中,加入Struts2的相关jar包,主要有如下五个:
        xwork-2.0.7.jar      struts2-core-2.0.14.jar    ognl-2.6.11.jar    freemarker-2.3.8.jar    commons-logging-1.0.4.jar
2.书写相应的jsp页面login.jsp和result.jsp,页面代码如下:
  login.jsp:

 1<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2    pageEncoding="gbk"
%>
 3<%@ taglib prefix="s" uri="/struts-tags" %>
 4<%--导入struts2的标签库,这个库的uri可以在struts-tags.tld中找到--%>
 5   
 6<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 7<html>
 8<head>
 9<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
10<title>Insert title here</title>
11</head>
12<body>
13    <!--<form action="/struts2/login.action" method="post">
14        username:<input type="text" name="username"/><br/>
15        password:<input type="password" name="password"/><br/>
16        <input type="submit" value="submit"/>
17    </form>
18-->
19    <%--采用struts2提供的标签,就能够利用struts2的数据校验功能。 --%>    
20    <s:form action="login"><%--这action的值与普通的form相比,只需访问的关键字,".action"也省了 --%>
21        <s:textfield name="username" label="username"></s:textfield>
22        <%--在struts2中用textfield表示普通文本框 --%>
23        <s:password name="password" label="password"></s:password>
24        <s:submit value="submit"></s:submit>
25    </s:form>
26    </body>
27</html>
    result.jsp:
 1<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2    pageEncoding="ISO-8859-1"
%>
 3<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4<html>
 5<head>
 6<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7<title>Insert title here</title>
 8</head>
 9<body>
10    username:${requestScope.username}<br>
11    password:${requestScope.password}
12</body>
13</html>

3.配置web.xml
 1<?xml version="1.0" encoding="UTF-8"?>
 2<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 3  <filter>
 4      <filter-name>struts2</filter-name>      
 5      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
 6  </filter>
 7  <filter-mapping>
 8      <filter-name>struts2</filter-name>
 9      <url-pattern>/*</url-pattern>    
10  </filter-mapping>
11</web-app>

4.书写相关的Action类,LoginAction.java:
 1package com.web.action;
 2
 3import com.opensymphony.xwork2.ActionSupport;
 4//要利用struts2的数据校验功能,需继承ActionSupport类,覆盖其中的validate方法。
 5public class LoginAction extends ActionSupport{
 6    private String username;
 7    private String password;
 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    public String execute()throws Exception{
21        //注意,数据的逻辑性校验应该放在execute方法里
22        if(!"jone".equals(this.getUsername())){
23            this.addFieldError("username""username is error.");
24        }

25        if(!"jone".equals(this.getPassword())){
26            this.addFieldError("password""password is error");
27            return"failer";
28        }

29        return "success";
30    }

31    //进行数据的有效性校验
32    @Override
33    public void validate() {
34        if(null==this.getUsername()||"".equals(this.getUsername())){
35            this.addFieldError("username""username is required.");
36        //可以通过这个方法,会将错误信息自动进行保存,和传输,这些错误信息会传送到input所指定的目标页
37        }

38        if(null==this.getPassword()||"".equals(this.getPassword())){
39            this.addFieldError("password""password is required");
40        }

41    }

42    
43    
44}

45

5.为这个Action类进行配置,struts.xml(编码时放在src目录下):
 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.xml的简单配置如下 -->
 6<struts>
 7    <package name="struts2" extends="struts-default">
 8        <action name="login" class="com.web.action.LoginAction">
 9        <!-- 这个name是指访问服务器路径的关键字(login.action)
10             class就是与访问路径相对应得处理类的全限定名。
11         -->
12            <result name="input">/login.jsp</result>
13            <!-- 对数据校验未能通过时跳转路径的配置,input是固定写法 -->
14            <result name="success">/result.jsp</result>
15            <!-- execute方法返回"success"时跳转路径的配置,"success"可省略,这是默认的。 -->
16            <result name="failer">/login.jsp</result>  
17            <!-- execute方法返回"failer"时跳转路径的配置 -->          
18        </action>
19    </package>
20</struts>
21

至此,即可进行运行测试。这个程序只有当username,与password都为"jone"时,才会跳转到result.jsp.
posted on 2010-10-13 14:59 jone 阅读(1061) 评论(1)  编辑  收藏 所属分类: struts2

Feedback

# re: Struts2的一个简单示例 2016-06-03 17:40 caoxiang
dd  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: