首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

第二章 一个容易的Login 应用程序

2012-10-07 
第二章 一个简单的Login 应用程序第一节 需求定义简单的需求如下图1 用户处在Welcome.jsp 页面,点击登录连

第二章 一个简单的Login 应用程序
第一节 需求定义

简单的需求如下图




1 用户处在Welcome.jsp 页面,点击登录连接到达Login.jsp页面

2 在Login.jsp输入用户名密码,点击登陆按钮,转到LoginAction处理

3.1 在登陆成功的情况下,再回到Welcome.jsp页面,在页面上显示登录信息

3.2 在登陆失败的情况下,返回到Login.jsp显示登陆错误信息

Welcome.jsp

Login.jsp

1 开始登陆

2 登陆

3.1登陆成功

3.2登陆失败

LoginAction











第二节 使用maven建立基本开发结构

使用如下命令建立Struts2 应用程序框架结构

mvn archetype:create  

-DgroupId=com.jpleasure

-DartifactId=login 

-DarchetypeGroupId=org.apache.struts  -DarchetypeArtifactId=struts2-archetype-starter

-DarchetypeVersion=2.0.5-SNAPSHOT -DremoteRepositories=http://people.apache.org/repo/m2-snapshot-repository

目录说明

生成的Struts2开发框架目录满足一般的maven项目,主要由以下目录组成:

src

   ├─main                              源代码目录

   │  ├─java                             java代码

   │  ├─resources                        资源文件等

   │  └─webapp                           Web目录

   │      ├─jsp                              JSP目录

   │      ├─styles                           CSS目录

   │      └─WEB-INF                          WEB-INF目录

   └─test                              测试代码目录

        ├─java                              java代码

        └─resources                         资源文件等

重要文件:

src\main\resources

    applicationContext.xml              Spring配置文件

    log4j.properties                    log4j配置文件

    struts.properties                   struts参数文件

    struts.xml                          struts配置文件

    xwork-conversion.properties         xwork参数文件



src\main\webapp\WEB-INF

decorators.xml 

dwr.xml                            DWR配置文件

sitemesh.xml                       SiteMesh配置文件

web.xml                            Web部署描述文件



进入工程目录(login目录)使用如下命令建立Eclipse工程文件

mvn eclipse:eclipse



使用如下命令打包工程

mvn package

应用程序打包完成之后可以再login\target目录中看到login.war文件,这个文件就是最终的成果文件



使用如下命令运行应用程序

mvn jetty:run



也可以将login.war拷贝到tomcat的webapps目录下来运行struts2应用程序。



打开IE在浏览器中输入:

http://localhost:8080/login

可以看到如下画面









说明自动生成的框架已经可以运行。



第三节 补充Login功能

下面我们来完成login功能

首先将login工程导入到Eclipse中



之后建立在src\main\java目录中建立LoginAction类,代码清单如下:

package com.jpleasure.login.action;



import javax.servlet.http.HttpSession;



import com.opensymphony.xwork2.ActionSupport;

import org.apache.struts2.ServletActionContext;



public class LoginAction extends ActionSupport {

    private String name;

    private String password;

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public String getPassword() {

       return password;

    }

    public void setPassword(String password) {

       this.password = password;

    }

   

    public String forward() throws Exception {

       return SUCCESS;

    }

   

    @Override

    public String execute() throws Exception {

       if("admin".equals(name)) {

HttpSession session = ServletActionContext.getRequest().getSession();

           session.setAttribute("name", name);

           return SUCCESS;

       } else {

           return INPUT;

       }

    }

}

Action具有以下特点:

1 从ActionSupport继承而来。

2 包含一些属性和getter,setter方法,这些属性用来保存客户端传递到服务器的数据,或者用来作为在JSP上显示的数据的源。

3 有一些返回String类型,无参数的方法,在LoginAction中是execute方法forwardLogin方法,这些方法就是Action需要执行的方法。



SUCCESS和INPUT都在com.opensymphony.xwork2.Action类中定义,类型为String,分别用来表示成功和输入结果。



在src\main\webapp中建立Welcome.jsp和Login.jsp两个JSP文件

Welcome.jsp代码清单如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@taglib prefix="s" uri="/struts-tags" %>



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Welcome</title>

</head>

<body>



<s:url action="forwardLogin" id="forwardLoginUrl"></s:url>

<s:a href="%{forwardLoginUrl}">Forward Login</s:a>

<%

    if(session.getAttribute("name") != null){

       out.println("<br/> login success.");

    }

%>

</body>

</html>



Login.jsp 代码清单如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@taglib prefix="s" uri="/struts-tags" %>



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Login</title>

</head>

<body>

<s:url action="login" id="loginUrl"></s:url>

<s:form action="%{loginUrl}">

    <s:textfield label="Name" name="name"/>

    <s:password label="Password" name="password" />

    <s:submit></s:submit>

</s:form>

</body>

</html>

这些JSP有如下特点:

1 有一个特殊的taglib声明,<%@taglib prefix="s" uri="/struts-tags" %>这是struts2的标准taglib声明。

2 一些s标签

<s:url action="forwardLogin" id="forwardLoginUrl"></s:url>定义了一个叫做forwardLoginUrl的指向forwardLogin的Action的路径。

同理:<s:url action="login" id="loginUrl"></s:url>定义了一个叫做loginUrl指向loginaction的Action的路径。

<s:a href="%{forwardLoginUrl}">Forward Login</s:a>定义了一个指向forwardLogin的链接,其中href使用了上面定义的内容。

<s:form action="%{loginUrl}">

    <s:textfield label="Name" name="name"/>

    <s:password label="Password" name="password" />

    <s:submit></s:submit>

</s:form>

定义了一个向login Action提交的form,这个Form提交name和password两个字段,这个Form的action指向使用了前面定义的loginUrl变量。



配置src\main\resources\struts.xml 文件

在默认的package中添加如下内容

<package name="myPackage" extends="struts-default">

<!-- login begin -->

<action name="forwardLogin" method="forward"

          method="forward"

          onsubmit="return true;" action="/login/login/login.action" method="POST">

<table name="name" value="" id="login_name"/></td>

</tr>

<tr>

    <td name="password" id="login_password"/></td>

</tr>

<tr>

<td colspan="2">

<div align="right"><input type="submit" id="login_0" value="Submit"/></div>

</td>

</tr>

</table>

</form>

当点击Submit按钮提交Form的时候,name和password输入分别被提交,这个Form提交的路径是:/login/login/login.action



根据如下Action配置:

<action name="login" class="com.jpleasure.login.action.LoginAction">

<result name="input">/Login.jsp</result>

<result>/Welcome.jsp</result>

</action>



Struts2框架找到对应的LoginAction,同时将提交上来的name和password赋值给LoginAction实例,因为没有说明login调用的方法,所以Struts框架调用默认的方法:execute



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/struts2/archive/2007/07/30/1716990.aspx

热点排行