• 【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,进入登陆页面:

    登陆页面

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

    登陆成功页面

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

    登陆失败页面



    整个步骤例如以下

    这里写图片描写叙述

  • 相关阅读:
    HTML5 WebSocket 技术介绍
    腾迅平台接入笔记
    Windows 2008 R2 64位上安装wamp失败的原因
    海伦公式
    ANE接入平台心得记录(安卓)
    ANE原生代码的调试(安卓)
    一行代码远离Google浏览器兼容问题的困扰
    U3D的飞船太空射击例子中,使用coroutine
    这几天在搞UNITY3D,感觉回到了AS2
    网页动物园2.0发布,经过几个月的努力,采用JAVA编写!
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8403682.html
Copyright © 2020-2023  润新知