Struts2使用ActionSupport類中的validate方法驗證使用者登陸資訊
阿新 • • 發佈:2018-12-30
初學JavaWeb開發,最近剛來時學Struts2,今天試了一下使用ActionSupport中的validate()方法驗證使用者登陸資訊,將此分享給大家
1.新建登陸頁面login.jsp,需要特別注意的是<s:fielderror><s:param>pwdError</s:param>
的pwdError
同後臺Action類中validate方法中的pwdError
要一樣addFieldError("pwdError", "使用者名稱不能為空");
<%@ 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>
<center>
<div style="margin-top:180px">
<s:form action="/user/login">
<s:fielderror><s:param>unameError</s:param></s:fielderror>
<s:textfield name="uname" label="使用者名稱" />
<s:fielderror><s:param>pwdError</s:param></s:fielderror>
<s:password name="pwd" label="密 碼" />
<s:submit value="登陸"/><s:reset value="重置"/>
</s:form>
</div>
</center>
</body>
</html>
2.新建登陸成功的返回頁index.jsp,因為只是測試一下效果,故只是隨便寫了一下
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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>首頁</title>
</head>
<body>
<h1>歡迎登陸成功</h1>
</body>
</html>
`
3.建立Action類,用於執行action請求,需要注意的是變數名需要與登陸頁使用者名稱與密碼欄的name
屬性值一樣;
在這裡注意了validate方法有兩種使用方法,一種是全域性的validate(),針對當前Action中的所有需要驗證的頁面進行驗證;另一種是validate後面跟action方法名,這裡要注意的是action方法名首字母要大寫,我使用的就是後者validateLogin()
,這裡的Login
就是UserAction
類中的login
方法
package controller;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UserAction extends ActionSupport {
private String uname;
private String pwd;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
/**
* 登陸頁面action
* @return
*/
public String login(){
if (uname.equals("tianlei") && pwd.equals("123456")) {
return SUCCESS;
} else {
return INPUT;
}
}
/**
* 驗證登陸頁面輸入的資訊,輸入資訊有誤時返回提示資訊到頁面
* @return
*/
public void validateLogin(){
if (uname.length() == 0) {
addFieldError("unameError", "使用者名稱不能為空");
}
if (pwd.equals("")) {
addFieldError("pwdError", "密碼不能為空");
}
}
}
4.配置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>
<!-- 在struts檔案中加入如下命令,當修改了xml檔案後就不用重啟tomcat
name="struts.devMode 表示為開發模式
value="true" 表示不需要重啟tomcat -->
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/user" extends="struts-default">
<default-action-ref name="defaultAction" />
<action name="login" class="controller.UserAction" method="login">
<result name="success">/pages/index.jsp</result>
<result name="input">/pages/login.jsp</result>
</action>
</package>
</struts>
5.配置web.xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Struts-validate</display-name>
<welcome-file-list>
<welcome-file>pages/login.jsp</welcome-file>
</welcome-file-list>
<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>
</filter-mapping>
</web-app>
6.瀏覽器測試效果
因為的樣式是struts2裡面預設的模板樣式,所以就會有如圖所示的小黑圓點,瀏覽器審查元素如下,有看到網友說更改struts jar包裡面的原始碼模板可以解決此問題,有興趣的朋友可以試一下,如果不想改原始碼可以嘗試使用css樣品進行美化