`
xiao_yi
  • 浏览: 405318 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第二章 一个简单的Login 应用程序

阅读更多
 

第一节 需求定义

<o:p></o:p>

简单的需求如下图

<o:p></o:p>

<v:group coordsize="8460,8100" id="_x0000_s1026" coordorigin="1702,1985" editas="canvas" style="WIDTH: 423pt; HEIGHT: 405pt"><o:lock v:ext="edit" aspectratio="t"></o:lock><v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype></v:group>

<v:shape stroked="t" id="_x0000_s1027" type="#_x0000_t75" o:preferrelative="f" style="LEFT: 1702px; WIDTH: 8460px; POSITION: absolute; TOP: 1985px; HEIGHT: 8100px"><v:fill o:detectmouseclick="t"></v:fill><v:path o:extrusionok="t" o:connecttype="none"></v:path><o:lock text="t" v:ext="edit"></o:lock></v:shape>

<v:shapetype o:spt="202" coordsize="21600,21600" id="_x0000_t202" path="m,l,21600r21600,l21600,xe"><v:stroke joinstyle="miter"></v:stroke><v:path o:connecttype="rect" gradientshapeok="t"></v:path></v:shapetype><v:shape stroked="f" id="_x0000_s1028" type="#_x0000_t202" style="LEFT: 1702px; WIDTH: 8280px; POSITION: absolute; TOP: 7925px; HEIGHT: 1800px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:shape>

1 用户处在Welcome.jsp 页面,点击登录连接到达Login.jsp页面<o:p></o:p>

2 Login.jsp输入用户名密码,点击登陆按钮,转到LoginAction处理<o:p></o:p>

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

3.2 在登陆失败的情况下,返回到Login.jsp显示登陆错误信息<o:p></o:p>

<v:group coordsize="6299,5581" id="_x0000_s1029" coordorigin="2962,1985" style="LEFT: 2962px; WIDTH: 6299px; POSITION: absolute; TOP: 1985px; HEIGHT: 5581px"><v:group coordsize="6299,5581" id="_x0000_s1030" coordorigin="2962,1985" style="LEFT: 2962px; WIDTH: 6299px; POSITION: absolute; TOP: 1985px; HEIGHT: 5581px"><v:group coordsize="1685,1697" id="_x0000_s1031" coordorigin="2741,8106" style="LEFT: 2962px; WIDTH: 1979px; POSITION: absolute; TOP: 2885px; HEIGHT: 1981px"><v:rect id="_x0000_s1032" alt="" style="LEFT: 2741px; WIDTH: 1685px; POSITION: absolute; TOP: 8106px; HEIGHT: 1697px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:rect><v:shape stroked="f" id="_x0000_s1033" type="#_x0000_t202" style="LEFT: 2894px; WIDTH: 1378px; POSITION: absolute; TOP: 8415px; HEIGHT: 308px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:shape></v:group></v:group></v:group>

Welcome.jsp

<v:group coordsize="1684,1698" id="_x0000_s1034" coordorigin="5498,8106" style="LEFT: 7282px; WIDTH: 1979px; POSITION: absolute; TOP: 2885px; HEIGHT: 1981px"><v:rect id="_x0000_s1035" style="LEFT: 5498px; WIDTH: 1684px; POSITION: absolute; TOP: 8106px; HEIGHT: 1698px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:rect><v:shape stroked="f" id="_x0000_s1036" type="#_x0000_t202" style="LEFT: 5651px; WIDTH: 1378px; POSITION: absolute; TOP: 8415px; HEIGHT: 308px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:shape></v:group>

Login.jsp

<v:group coordsize="3217,771" id="_x0000_s1037" coordorigin="4119,7952" style="LEFT: 3862px; WIDTH: 4320px; POSITION: absolute; TOP: 1985px; HEIGHT: 900px"><v:line from="4119,8261" to="4119,8723" id="_x0000_s1038" style="POSITION: absolute"></v:line><v:line from="4119,8261" to="7336,8261" id="_x0000_s1039" style="POSITION: absolute"></v:line><v:line from="7336,8261" to="7336,8723" id="_x0000_s1040" style="POSITION: absolute"><v:stroke endarrow="block"></v:stroke></v:line><v:shape stroked="f" id="_x0000_s1041" type="#_x0000_t202" style="LEFT: 5038px; WIDTH: 1074px; POSITION: absolute; TOP: 7952px; HEIGHT: 309px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:shape></v:group>

1 开始登陆<o:p></o:p>

<v:rect id="_x0000_s1042" style="LEFT: 4942px; WIDTH: 1980px; POSITION: absolute; TOP: 5585px; HEIGHT: 1981px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:rect><v:group coordsize="1260,1442" id="_x0000_s1043" coordorigin="6922,4863" style="LEFT: 6922px; WIDTH: 1260px; POSITION: absolute; TOP: 4863px; HEIGHT: 1442px"><v:line from="8180,4863" to="8180,6303" id="_x0000_s1044" style="POSITION: absolute"></v:line><v:line from="6922,6305" to="8182,6305" id="_x0000_s1045" style="POSITION: absolute"><v:stroke endarrow="block"></v:stroke></v:line></v:group><v:group coordsize="1080,1440" id="_x0000_s1046" coordorigin="3862,4865" style="LEFT: 3862px; WIDTH: 1080px; POSITION: absolute; TOP: 4865px; HEIGHT: 1440px"><v:line from="3862,6305" to="4942,6305" id="_x0000_s1047" style="POSITION: absolute"></v:line><v:line from="3862,4865" to="3862,6305" id="_x0000_s1048" style="POSITION: absolute"><v:stroke endarrow="block"></v:stroke></v:line></v:group><v:shape stroked="f" id="_x0000_s1049" type="#_x0000_t202" style="LEFT: 7460px; WIDTH: 1260px; POSITION: absolute; TOP: 6483px; HEIGHT: 360px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:shape>

2 登陆

<v:shape stroked="f" id="_x0000_s1050" type="#_x0000_t202" style="LEFT: 2962px; WIDTH: 1619px; POSITION: absolute; TOP: 6485px; HEIGHT: 360px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:shape>

3.1登陆成功

<v:group coordsize="1440,1440" id="_x0000_s1051" coordorigin="5842,4145" style="LEFT: 5842px; WIDTH: 1440px; POSITION: absolute; TOP: 4145px; HEIGHT: 1440px"><v:line from="5842,4145" to="5842,5585" id="_x0000_s1052" style="POSITION: absolute"></v:line><v:line from="5842,4145" to="7282,4145" id="_x0000_s1053" style="POSITION: absolute"><v:stroke endarrow="block"></v:stroke></v:line></v:group><v:shape stroked="f" id="_x0000_s1054" type="#_x0000_t202" style="LEFT: 5662px; WIDTH: 1260px; POSITION: absolute; TOP: 3605px; HEIGHT: 360px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:shape>

3.2登陆失败

<v:shape stroked="f" id="_x0000_s1055" type="#_x0000_t202" style="LEFT: 5122px; WIDTH: 1621px; POSITION: absolute; TOP: 5944px; HEIGHT: 541px"><v:textbox inset="5.85pt,.7pt,5.85pt,.7pt"></v:textbox></v:shape>

LoginAction

<w:wrap type="none"></w:wrap><w:anchorlock></w:anchorlock><o:p></o:p>

<o:p></o:p>

<o:p></o:p>

<o:p></o:p>

<o:p> </o:p>

<o:p></o:p>

<o:p></o:p>

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

<o:p></o:p>

使用如下命令建立Struts2 应用程序框架结构<o:p></o:p>

mvn archetype:create   <o:p></o:p>

-DgroupId=com.jpleasure <o:p></o:p>

-DartifactId=login  <o:p></o:p>

-DarchetypeGroupId=org.apache.struts  -DarchetypeArtifactId=struts2-archetype-starter <o:p></o:p>

-DarchetypeVersion=<st1:chsdate isrocdate="False" month="12" w:st="on" day="30" islunardate="False" year="1899">2.0.5</st1:chsdate>-SNAPSHOT -DremoteRepositories=http://people.apache.org/repo/m2-snapshot-repository<o:p></o:p>

目录说明<o:p></o:p>

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

src<o:p></o:p>

   ├─main                              源代码目录<o:p></o:p>

     ├─java                             java代码<o:p></o:p>

     ├─resources                        资源文件等<o:p></o:p>

     └─webapp                           Web目录<o:p></o:p>

         ├─jsp                              JSP目录<o:p></o:p>

         ├─styles                           CSS目录<o:p></o:p>

         └─WEB-INF                          WEB-INF目录<o:p></o:p>

   └─test                              测试代码目录<o:p></o:p>

        ├─java                              java代码<o:p></o:p>

        └─resources                         资源文件等<o:p></o:p>

重要文件:<o:p></o:p>

src\main\resources<o:p></o:p>

    applicationContext.xml              Spring配置文件<o:p></o:p>

    log4j.properties                    log4j配置文件<o:p></o:p>

    struts.properties                   struts参数文件<o:p></o:p>

    struts.xml                          struts配置文件<o:p></o:p>

    xwork-conversion.properties         xwork参数文件<o:p></o:p>

<o:p> </o:p>

src\main\webapp\WEB-INF<o:p></o:p>

decorators.xml  <o:p></o:p>

dwr.xml                            DWR配置文件<o:p></o:p>

sitemesh.xml                       SiteMesh配置文件<o:p></o:p>

web.xml                            Web部署描述文件<o:p></o:p>

<o:p> </o:p>

进入工程目录(login目录)使用如下命令建立Eclipse工程文件<o:p></o:p>

mvn eclipse:eclipse<o:p></o:p>

<o:p> </o:p>

使用如下命令打包工程<o:p></o:p>

mvn package<o:p></o:p>

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

<o:p> </o:p>

使用如下命令运行应用程序<o:p></o:p>

mvn jetty:run<o:p></o:p>

<o:p> </o:p>

也可以将login.war拷贝到tomcatwebapps目录下来运行struts2应用程序。<o:p></o:p>

<o:p> </o:p>

打开IE在浏览器中输入:<o:p></o:p>

http://localhost:8080/login<o:p></o:p>

可以看到如下画面

<o:p></o:p>

<v:shape id="_x0000_i1026" type="#_x0000_t75" style="WIDTH: 424.5pt; HEIGHT: 298.5pt"><v:imagedata src="file:///C:%5CDOCUME%7E1%5Cmazhao%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image002.png" o:title=""></v:imagedata></v:shape><o:p></o:p>

说明自动生成的框架已经可以运行。<o:p></o:p>

<o:p> </o:p>

第三节 补充Login功能

<o:p></o:p>

下面我们来完成login功能<o:p></o:p>

首先将login工程导入到Eclipse<o:p></o:p>

<o:p> </o:p>

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

package com.jpleasure.login.action;<o:p></o:p>

<o:p> </o:p>

import javax.servlet.http.HttpSession;<o:p></o:p>

<o:p> </o:p>

import com.opensymphony.xwork2.ActionSupport;<o:p></o:p>

import org.apache.struts2.ServletActionContext;<o:p></o:p>

<o:p> </o:p>

public class LoginAction extends ActionSupport {<o:p></o:p>

    private String name;<o:p></o:p>

    private String password;<o:p></o:p>

    public String getName() {<o:p></o:p>

       return name;<o:p></o:p>

    }<o:p></o:p>

    public void setName(String name) {<o:p></o:p>

       this.name = name;<o:p></o:p>

    }<o:p></o:p>

    public String getPassword() {<o:p></o:p>

       return password;<o:p></o:p>

    }<o:p></o:p>

    public void setPassword(String password) {<o:p></o:p>

       this.password = password;<o:p></o:p>

    }<o:p></o:p>

    <o:p></o:p>

    public String forward() throws Exception {<o:p></o:p>

       return SUCCESS;<o:p></o:p>

    }<o:p></o:p>

    <o:p></o:p>

    @Override<o:p></o:p>

    public String execute() throws Exception {<o:p></o:p>

       if("admin".equals(name)) {<o:p></o:p>

HttpSession session = ServletActionContext.getRequest().getSession();<o:p></o:p>

           session.setAttribute("name", name);<o:p></o:p>

           return SUCCESS;<o:p></o:p>

       } else {<o:p></o:p>

           return INPUT;<o:p></o:p>

       }<o:p></o:p>

    }<o:p></o:p>

}<o:p></o:p>

Action具有以下特点:<o:p></o:p>

1 ActionSupport继承而来。<o:p></o:p>

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

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

<o:p> </o:p>

SUCCESSINPUT都在com.opensymphony.xwork2.Action类中定义,类型为String,分别用来表示成功和输入结果。<o:p></o:p>

<o:p> </o:p>

src\main\webapp中建立Welcome.jspLogin.jsp两个JSP文件<o:p></o:p>

Welcome.jsp代码清单如下:<o:p></o:p>

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

    pageEncoding="UTF-8"%><o:p></o:p>

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

<o:p> </o:p>

<!DOCTYPE html PUBLIC "-//W<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="3" negative="False" numbertype="1" unitname="C" w:st="on">3C</st1:chmetcnv>//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><o:p></o:p>

<html><o:p></o:p>

<head><o:p></o:p>

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

<title>Welcome</

分享到:
评论

相关推荐

    《嵌入式Linux应用程序开发详解》(pdf)第二章

    ### 嵌入式Linux应用程序开发详解:第二章 Linux基础命令 #### 一、章节概述 本章节选自《嵌入式Linux应用程序开发详解》的第二章,主要介绍了Linux的基础命令,这对于理解如何在Linux环境下进行高效的工作至关...

    ASP.NET AJAX程序设计第二卷第五章

    ### ASP.NET AJAX程序设计第二卷第五章:应用程序服务和本地化的深入解析 #### 应用程序服务:开启高效开发新模式 在《ASP.NET AJAX程序设计第二卷第五章》中,作者陈黎夫深入探讨了ASP.NET 2.0中一个关键的新特性...

    实验指导\第二章Struts框架详解.doc

    本实验指导将带你深入理解Struts框架,并通过创建一个简单的用户登录系统来实践其核心概念。 ### 实验简介 本实验的主要目标是让学生掌握Struts框架的核心组件,包括控制器、Action、ActionForm和配置文件的作用。...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    第二部分 数据访问 第7章 基础 7.1 ADO.NET架构 7.1.1 ADO.NET数据提供程序 7.1.2 ADO.NET的标准化 7.1.3 基本ADO.NET类 7.2 Connection类 7.2.1 连接字符串 7.2.2 测试连接 7.2.3 连接池 7.3 ...

    JSP项目开发之第2章 图书馆管理系统

    在本教程中,我们将深入探讨"JSP项目开发之第2章 图书馆管理系统",这是一个基于JavaServer Pages(JSP)技术构建的实际应用。图书馆管理系统是管理图书借阅、归还、查询等功能的软件系统,它对于图书馆的日常运营至...

    ccna第二学期第一章练习中文答案

    2. IP 协议头的修改:当路由器接收到一个以太网帧并需要将其转发到另一个接口时,它会修改第二层(链路层)的目的MAC地址和第三层(网络层)的目的IP地址,以确保数据包能够到达其目的地。 3. 接口配置问题:配置...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    全书一共被压缩为5个rar,这是第二个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan...

    ASP.NET.2.0.编程-------珠玑

    第二章强调了在开始一个新项目之前进行充分组织和规划的重要性。这一章提供了很多资源来帮助开发人员打下坚实的基础。从选择合适的技术栈到确定项目的架构,这一章都是围绕如何确保项目的成功展开的。对于那些即将...

    ASP.NET3.5揭秘(卷2)part1

    第二部分 创建ASP.NET应用程序  第3章 维护应用程序状态  3.1 使用浏览器cookie  3.2 使用Session状态  3.3 使用用户配置文件  3.4 小结  第4章 缓存应用程序页面和数据  4.1 缓存概览  4.2 使用...

    ASP.NET 3.5 揭秘(卷2).part2

    第二部分 创建ASP.NET应用程序  第3章 维护应用程序状态  3.1 使用浏览器cookie  3.2 使用Session状态  3.3 使用用户配置文件  3.4 小结  第4章 缓存应用程序页面和数据  4.1 缓存概览  4.2 使用...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan...

    Portal培訓教材之第8章_常见应用集成_FromIBM(8)

    在本章节中,我们将深入了解如何将各种常见的应用程序集成到IBM Portal中,包括办公自动化(OA)系统、业务流程管理(BPM)系统、即时通讯工具、论坛系统以及其他第三方应用。通过这些集成,我们可以增强IBM Portal的...

    ASP.NET4高级程序设计(第4版) 3/3

    第二部分 数据访问 第7章 基础 208 7.1 ADO.NET架构 209 7.1.1 ADO.NET数据提供程序 209 7.1.2 ADO.NET的标准化 210 7.1.3 基本ADO.NET类 211 7.2 Connection类 212 7.2.1 连接字符串 212 7.2.2 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan...

    ASPNET35开发大全第一章

    17.2.2 新建一个MVC应用程序 17.2.3 ASP.NET MVC应用程序的结构 17.2.4 运行ASP.NET MVC应用程序 17.3 ASP.NET MVC原理 17.3.1 ASP.NET MVC运行流程 17.3.2 ASP.NET MVC工作原理 17.4 ASP.NET MVC开发 17.4.1 创建...

    微信小程序开发(一) (2).docx

    **第二章:“微信”小程序开发(二)**(未提供具体内容) 在后续章节中,通常会介绍更多关于小程序开发的细节,包括组件使用、网络请求、生命周期方法、API调用等。开发者需要掌握这些技能来创建丰富的交互体验和...

Global site tag (gtag.js) - Google Analytics