zoukankan      html  css  js  c++  java
  • 【SSH高速进阶】——struts2简单的实例

    近期刚刚入门struts2。这里做一个简单的struts2实例来跟大家一起学习一下。

    本例实现最简单的登陆,仅包括两个页面:login.jsp 用来输入username与password;success.jsp 为登陆成功页面。error.jsp为登陆失败页面。


    1、新建web项目“struts2”


    2、引入jar包


    下载struts2所需jar包 struts-2.3.24-all.zip

    解压后将例如以下最主要的jar包导入到WebRoot/WEB-INF/lib下

    struts2基本jar包

    3、在WebRoot下建立页面


    login.jsp:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>  
      <body>
      <form action="login">
        username:<input type="text" name="username" /><br>
        password:<input type="password" name="password" /><br>
        <input type="submit" value="submit" /><br>
      </form>   
      </body>
    </html>

    此处form标签的action属性值指向的是以下struts.xml中的action标签的name属性,表示提交的表单由action标签中的class指向的LoginAction类来处理。

    success.jsp:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>
      <body>
      恭喜您:${requestScope.username} 登陆成功<br/>
      </body>
    </html>

    error.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head> 
      <body>
        登陆失败
      </body>
    </html>
    

    3、配置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">
      <display-name></display-name> 
      <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
      </welcome-file-list>
    
      <!-- 此Filter目的是设置全部的请求都由Struts2来处理 -->
      <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><!-- 全部请求都由Struts2来处理 -->
      </filter-mapping>
    </web-app>

    此处用filter过滤器设置了不论什么client的请求都由struts2来处理(设置struts为请求分发器)

    4、建立action


    package com.danny.user.action;
    
    public class LoginAction {
        private String username;
        private String password;
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String execute() {
            if("admin".equals(username) && "admin".equals(password))
            {
                return "success";
            }else{
                return "error";
            }
        }
    }

    这个LoginAction用于处理登陆页面发来的数据。既然要处理数据,首先要接收数据,那么它是怎样接收到前台的数据的呢?
    页面提交之后,去struts.xml中寻找相应action,进而找到LoginAction。LoginAction依据表单中input的name属性来获取值。规则就是:input的name属性值要和LoginAction中相相应的get、set方法后面的值一样。与LoginAction的字段没有关系:比方input的name属性值为“username”,那么LoginAction重相应的字段的get方法名应为“getUsername()”。所以这个LoginAction全然能够改成这样:

    package com.danny.user.action;
    
    public class LoginAction {
        private String name;
        private String pwd;
    
        public String getUsername() {
            return name;
        }
    
        public void setUsername(String username) {
            this.name = username;
        }
    
        public String getPassword() {
            return pwd;
        }
    
        public void setPassword(String password) {
            this.pwd = password;
        }
    
        public String execute() {
            if("admin".equals(name) && "admin".equals(pwd))
            {
                return "success";
            }else{
                return "error";
            }   
        }
    }

    LoginAction中的execute方法是每一个action必需要实现的方法,用于处理数据并返回要显示的界面。

    5、配置struts.xml


    在src文件夹下建立struts.xml

    <?

    xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="struts2" extends="struts-default"> <!-- extends是继承的意思,struts-default位于struts2-core-2.3.24.jar.struts-default.xml --> <action name="login" class="com.danny.user.action.LoginAction"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>

    struts.xml中,每一个action相应一个action。这个name为”login”的action就相应com.danny.user.action包下的LoginAction。result的name相应于action的execute的返回值,假设返回”success”则跳转到success.jsp;假设返回”error”则跳转到error.jsp。


    至此。部署项目,訪问localhost:8080/struts2,进入登陆页面:

    登陆页面

    登陆成功时,跳转到成功页面:

    登陆成功页面

    用户名、密码错误时,跳转到登陆失败页面:

    登陆失败页面



    整个步骤例如以下

    这里写图片描写叙述

  • 相关阅读:
    [转载]AXIS学习笔记
    [转]MQ(JMS) 的姊妹篇,Web service实践浅谈原理和用途
    [转]Oracle EXTRACT()函数与to_char() 函数
    [转]Webservice,基于Axis的最佳实践
    IIS出现The specified module could not be found解决方法
    转: ORA12560: TNS:protocol adapter error(TNS:协议适配器错误)
    PLSQL_案例优化系列_分析体系结构如何左右SQL性能(案例2)
    WebADI_数据验证3_建立基于Table的LOV验证(案例)
    PLSQL_案例优化系列_体会索引让SQL举步维艰的一面(案例6)
    PLSQL_案例优化系列_体会函数及位图索引与SQL优化(案例7)
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8403682.html
Copyright © 2011-2022 走看看