login.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    
<title>struts标签的登陆页面</title>
</head>
<body>
    
<s:form name="loginForm" method="post" action="login" >
        
<s:textfield name="username"  label="用户名"></s:textfield>
        
<s:password name="pwd"  label="密  码"></s:password>
        
<s:submit label=" 登  陆 "></s:submit>
        
<s:reset  label=" 重  置 "></s:reset>
    
</s:form>
</body>
</html>

show.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
<head>
    
<title>显示结果</title>
</head>
<body>
    
<!-- 因为struts2都是用的dispatcher即转发,都是同一次请求,所以可以到request作用于中取值 -->
    
<h3>用户名--->${requestScope.username}<br>
        密码--->${requestScope.pwd}
<br>
</body>
</html>

loginAction
package com.yz.struts2.actions;

import com.opensymphony.xwork2.ActionSupport;

public class loginAction extends ActionSupport{
    
    
private String username;
    
private String pwd;
    
public String getUsername() {
        
return username;
    }

    
public void setUsername(String username) {
        
this.username = username;
    }

    
public String getPwd() {
        
return pwd;
    }

    
public void setPwd(String pwd) {
        
this.pwd = pwd;
    }

    
    
public String helloWorld()  {
        System.out.println(
"用户名--->"+username);
        System.out.println(
"密码--->"+pwd);
        
if("小毅".equals(username) && "xiaoyi".equals(pwd)){
            
return "ok";//查找名字为ok的result,相当于struts1.*的foward名
        }
else{
            
this.addFieldError("username","用户名或密码错误");
            
return "failer";
        }

    }

    
//验证表单输入
    @Override
    
public void validate() {
        
if("".equals(this.getUsername().trim()) || null==this.getUsername()){
            
//第一个参数为: index.jsp表单中的文本框的name(名字)第二个为错误消息
            this.addFieldError("username""用户名不能为空");
        }

        
if("".equals(this.getPwd().trim()) || null==this.getPwd()){
            
this.addFieldError("pwd""密码不能为空");
        }

    }

    
}


web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
    
<!-- struts2采用过滤器过滤客户端发送给服务器的所有请求 -->
    
<filter>
        
<filter-name>struts2</filter-name>
        
<filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        
</filter-class>
    
</filter>
    
<filter-mapping>
        
<filter-name>struts2</filter-name>
        
<url-pattern>/*</url-pattern>
    
</filter-mapping>
    
<welcome-file-list>
        
<welcome-file>index.jsp</welcome-file>
    
</welcome-file-list>
</web-app>

struts.xml
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"
>
<struts>
<!-- struts2会自动到classes下找struts.xml,
直接放在src下工具会自动把src下的文件编译到classes下 
dtd头信息表示 sturs为根标签
-->
    
<!-- struts2这个包继承sturs2内置的包struts-default -->
    
<package name="struts2" extends="struts-default">
        
<!-- 配置action
            name: 对应index.jsp页面中form的action= login.action 的login
            struts默认所有以点action结尾的请求交给struts处理,因为继承自webwork的特性,习惯于这样。。
            class: action对应的类,包名点类名全路径(com.yz.struts2.loginAction)
            method:请求该action时自动执行的方法,如果没有配置默认执行execute方法
         
-->
        
<action 
            
name="login" 
            class
="com.yz.struts2.actions.loginAction"
            method
="helloWorld"
        
>
        
<!-- result默认的name为success -->
        
<result name="ok">/show.jsp</result>
        
<!-- 在继承ActionSuport的action中的validate方法来验证表单输入信息,验证中添加filedError后返回
            name为input的result对应的页面,必须name为input,类似于struts1.*中action配置的input
         
-->
        
<result name="input">/login2.jsp</result>
        
<result name="failer">/login2.jsp</result>
        
</action>
        
    
</package>
</struts>

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


网站导航:
 

posts - 0, comments - 21, trackbacks - 0, articles - 101

Copyright © H2O