前面的文章,介绍了Struts2的工作原理以及与Struts1的区别,理论的东西明白了,下边就该实践了。我们以登录为例,来进行学习。
项目的总体结构
声明:采用的Struts2版本为:struts-2.1.8.1-all
1、首先,创建Java Web项目
2、引入Struts2相关的依赖包,将依赖包拷贝到WEB-INF/lib下
3、在web.xml文件中,配置StrutsPrepareAndExecuteFilter
新建的JavaWeb项目中,可能不存在web.xml文件,需要我们手动创建。创建完毕后,关于里边的配置,我们可以找到下载的Struts2包,然后找到struts-2.1.8.1\apps\struts2-blank-2.1.8.1\WEB-INF下的web.xml文件,里边有基本的配置,可以直接拷贝过来。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" 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">
<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>
4、建立相关的JSP页面(login.jsp、login_success.jsp、login_error.jsp)
登录界面:login.sjp
<%@ page language="java" import="java.util.*" 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=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="login.action">
用户:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
登录成功界面:login_success.jsp
<%@ page language="java" import="java.util.*" 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=GB18030">
<title>Insert title here</title>
</head>
<body>
${username },登录成功
</body>
</html>
登录失败界面:login_error.jsp
<%@ page language="java" import="java.util.*" 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=GB18030">
<title>Insert title here</title>
</head>
<body>
登录失败
</body>
</html>
5、创建Struts2登录的Action:LoginAction
Struts2的Action可以不用继承Struts2框架中的任何类,也不用实现Struts2框架中的任何接口。Struts2的Action可以是一个POJO。同时,在Action中提供getter和setter方法,便于数据的收集。
package com.tgb.struts2;
/**
* Struts2登录Action
* @author Kirn
*
*/
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;
}
//用户名、密码都设定为admin
public String execute() throws Exception {
if ("admin".equals(username) && "admin".equals(password)) {
return "success";
}else {
return "error";
}
}
}
6、在src下,新建Struts2的配置文件:struts.xml。在里边进行Action与JSP的配置。
关于struts.xml文件中的具体配置,可以参考Struts2包中,struts-2.1.8.1\apps\struts2-blank-2.1.8.1\WEB-INF\src\java目录下的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>
<!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 会提供更加友好的提示信息 -->
<constant name="struts.devMode" value="true"/>
<!-- 需要继承struts-default包,这样就拥有的最基本的功能 -->
<package name="struts2" extends="struts-default">
<action name="login" class="com.tgb.struts2.LoginAction">
<result name="success">/login_success.jsp</result>
<result name="error">/login_error.jsp</result>
</action>
</package>
</struts>
OK,到这我们就实现了采用Struts2框架的用户登录Demo。就这样从初步的学习,到简单Demo的实现。相信,随着学习的深入,对Struts2的理解会更加深刻。
纸上得来终觉浅,绝知此事要躬行。共勉!