项目结构图:
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">
<!-- UrlRewriteFilter简化URL,有利于搜索引擎收录 -->
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>logLevel</param-name>
<param-value>WARN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Struts2 核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,struts.xml,struts-user.xml </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
</web-app>
urlrewrite.xml文件内容:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN"
"http://tuckey.org/res/dtds/urlrewrite3.1.dtd">
<urlrewrite>
<rule>
<from>^/login/([0-9a-zA-Z]+){1}</from>
<to>/userLogin?userName=$1</to>
</rule>
</urlrewrite>
UserLoginAction.java类:
package com.rain.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;
//定义父包
//定义命名空间
//定义异常,当userName=null,也就是报空指针异常时,会进入input result
@ParentPackage(value = "struts-default")
@Namespace(value = "/user")
public class UserLoginAction extends ActionSupport {
/**
* 序列号
*/
private static final long serialVersionUID = 1426118070178570692L;
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
// 访问路径是http://localhost/urlRewrite/userLogin?userName=admin
@Action(value = "/userLogin", results = { @Result(name = ActionSupport.INPUT, location = "/error.jsp"), @Result(name = ActionSupport.SUCCESS, location = "/success.jsp") })
public String userLogin() {
String result = INPUT;
if (userName.equals("admin")) {
result = SUCCESS;
}
return result;
}
}
index.jsp登录页面:
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录页面</title>
</head>
<body>
<form action="userLogin">
用户名:<input name="userName" type="text">
<input type="submit" value="登录"/>
</form>
</body>
</html>
success.jsp登录成功页面:
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>成功页面</title>
</head>
<body>
恭喜,${userName}登录成功!
</body>
</html>
filed.jsp登录失败页面:
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>失败页面</title>
</head>
<body>
对不起,${userName}您登录失败!!!
</body>
</html>
几种访问方式:
1、http://localhost/urlRewrite/index.jsp 输入admin(正确)或其它用户名进行测试
2、http://localhost/urRewrite/userLogin?userName=admin
3、http://localhost/urlRewrite/login/admin