Struts2的入门案例(Struts2的配置和页面跳转,以及对页面输入的信息进行判断)
Struts2配置:
<?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>Struts2</display-name>
<filter>
<!-- <filter-name>名字保持一致 -->
<filter-name>struts</filter-name>
<!-- 1、struts2-core-2.3.37.jar
2、org.apache.struts2.dispatcher.ng.filter
3、StrutsPrepareAndExecuteFilter.class 中找 -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
<!-- /*表示全部 -->
</filter-mapping>
</web-app>
Struts2配置文件:文件名必需是struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- struts2-core-2.3.37.jar struts-default.xml 中找配置代码提示 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 如果更改代码,可以不用重新启动服务器 -->
<constant name="struts.configuration.xml.reload" value="true"></constant>
<!-- name可以自己随意取名,extends struts2的jar包,namespace:默认/文件路径之间的使用 -->
<package name="del" extends="struts-default" namespace="/">
<!-- name="login"可以自己随便取,class是你class文件的路径 -->
<action name="login" class="com.fn.action.Action">
<!-- 页面进行跳转到你指定的jsp页面 -->
<result name="success">
/success.jsp
</result>
<result name="error">
/error.jsp
</result>
</action>
</package>
</struts>
class文件的代碼:
package com.fn.action;
import com.opensymphony.xwork2.ActionSupport;
public class Action extends ActionSupport{
/*
* 继承ActionSupport类,提供get、set的方法,获取输入参数(快捷键:Shift+alt+s)
*/
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String execute() throws Exception {
//来进行判断页面输入的数据;equals:比较
if("张三".equals(name)&&"123456".equals(pwd)) {
return SUCCESS;
//SUCCESS,是自带的,可以直接使用,也可以自己定义:表示页面跳转成功
}else {
return ERROR;
//ERROR,是自带的,可以直接使用,也可以自己定义:表示页面跳转失败
}
}
}
jsp登录页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<!-- jsp页面的信息输入框展示给用户的登录页面
action:项目名+struts.xml中的action名
method:提交方式
name:要和get、set方法中的名称保持一致
-->
<form action="Struts2/login" method="post">
<p>账户名:<input type="text" name="name"></p>
<p>密码:<input type="password" name="pwd"></p>
<p><input type="submit" value="登录">
</form>
</body>
</html>
jsp登录成功页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>成功页面</title>
</head>
<body>
<!-- ${name}:el表达式,可以获取用户输入并显示在页面中 -->
<h2>欢迎${name}登录!</h2>
</body>
</html>
jsp登录失败页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>错误页面</title>
</head>
<body>
您输入的用户名或者密码错误!
<!--
全路径的名称,直接写jsp页面的名称,跳转不过去,暂时不知道为什么
比如这个:<a href=login.jsp">点击返回登录页面</a>
-->
<a href="${pageContext.request.contextPath}/login.jsp">点击返回登录页面</a>
</body>
</html>