现在的位置: 首页 > 综合 > 正文

Struts2学习笔记02—-第一个struts2应用程序

2018年02月04日 ⁄ 综合 ⁄ 共 3167字 ⁄ 字号 评论关闭

开发环境:win7+Tomcat7+MyEclipse8.6

项目框架如图:

第一步:新建webproject项目,并添加struts2的支持,同时myeclipse会为我们配置好web.xml。不需要我们手工配置。

第二步:新建PersonAction文件

package com.stone.Action;
import com.opensymphony.xwork2.ActionSupport;

public class PersonAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	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;
	}

	public String execute() throws Exception {
		if(username.equals("stone") && password.equals("stone"))
			return "success";
		else
			return "failure";
	}
}

第三步:在struts.xml文件中注册PersonAction。主要代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="myFirst" namespace="/struts2" extends="struts-default">
		<action name="login" class="com.stone.Action.PersonAction">
			<result name="success">/WEB-INF/Page/loginSuccess.jsp</result>
			<result name="failure">/WEB-INF/Page/loginfailure.jsp</result>
		</action>
	</package>
</struts> 

包配置:
Struts2 框架中核心组件就是Action、拦截器等,Struts2 框架使用包来管理Action 和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合。
在struts.xml 文件中package 元素用于定义包配置,每个package 元素定义了一个包配置。它的常用属性有:
name:必填属性,用来指定包的名字。

extends:可选属性,用来指定该包继承其他包。继承其它包,可以继承其它包中的Action 定义、拦截器定义等。

namespace:可选属性,用来指定该包的命名空间。

第四步:提供jsp页面

login.jsp主要代码:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
  </head>
  
  <body>
    <form action="${pageContext.request.contextPath}/struts2/login.action">
    	用户名:<input type="text" name="username"><br>
    	密码:<input type="password" name="password"><br>
    	<input type="submit" value="登陆">
    </form>
  </body>
</html>

failue.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=gbk"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
  </head>
  
  <body>
    	登录失败!错误的用户名:<s:property value="username"/><br>
    	<a href="${pageContext.request.contextPath}/login.jsp">返回</a>
  </body>
</html>

success.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=gbk"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
  </head>
  
  <body>
    	登陆成功!
  </body>
</html>

运行如图所示:

简要分析执行流程:
当输入login.jsp 访问jsp 页面填写完相关信息并提交给login.action 时,它会首先被在web.xml 中配置的过滤器监听到,过滤器会去查找strust.xml 文件,并结合namespace 查找名为login 的action,查找到此action 便交给其处理,LoginAction 内部会执行execute 方法,并返回结果result(result
也是参照的struts.xml 中action 下的result 配置)。 关于表单传参,主要是参照的action 中的方法名,而非属性名。

登陆界面,用户名输入stone,密码输入stone

单击登陆

当输入错误的密码时”:

抱歉!评论已关闭.