【SSH三框架】Struts2第一章的基础:第一次写Struts2规划

今年八月,当已经SSH三架完成学业。然后,他感动Android开展。三个框架已经很长的时间做无用的东西。所以,如果你想花三四天的时间来复习一下,写在博客。

附带SSH整个jar包网盘下载:http://pan.baidu.com/s/1hqf5ta8


首先,我们新创建一个web项目,然后引入jar包:commons-fileupload。commons-io。freemarker,javassist。ognl。struts2-core,xwork-core。

这里不过个简单的struts程序。所以只引入了这些jar包


接下来,我们就是配置web.xml的内容了,web.xml:

<?xml version="1.0" encoding="GBK"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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">

	<!-- 定义Struts2的核心Filter -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<!-- 让Struts2的核心Filter拦截全部请求 -->
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>
这里边是定义了一个Struts2的核心拦截器,Struts2的核心就是环绕拦截器而生的


然后。我们写一个登陆的页面:login.jsp

<%@ page language="java" contentType="text/html; charset=GBK"
	pageEncoding="GBK"%>
<%@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=GBK">
<title><s:text name="loginPage"/></title>
</head>
<body>
<s:form action="login">
	<s:textfield name="username" key="user"/>
	<s:textfield name="password" key="pass"/>
	<s:submit key="login"/>
</s:form>
</body>
</html>
这里用到了struts2的标签库。在以后会做介绍


在login.jsp我们为form表单定义了一个action,是在点击login之后跳转的作用。在学servlet的时候应该都用过。

这个action我们能够在struts.xml中定义。这个struts.xml我们通常是放在src文件夹下边。也能够变化(只是也要改变对应的路径)

struts.xml:

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
	"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<!-- 指定Struts 2配置文件的根元素 -->
<struts>
	<!-- 指定全局国际化资源文件 -->
	<constant name="struts.custom.i18n.resources" value="mess"/>
	<!-- 指定国际化编码所使用的字符集 -->	
	<constant name="struts.i18n.encoding" value="GBK"/>
	<!-- 全部的Action定义都应该放在package下 -->
	<package name="lee" extends="struts-default">
		<action name="login" class="org.crazyit.app.action.LoginAction">
			<!-- 定义三个逻辑视图和物理资源之间的映射 -->		
			<result name="input">/login.jsp</result>
			<result name="error">/error.jsp</result>
			<result name="success">/welcome.jsp</result>
		</action>
	</package>
</struts>
这里其他的东西不用管,我们看下<package></package>标签中的内容,这里边定义了一个action,设置name属性为“login”,class属性为:LoginAction

然后下边是三个result,分别有各自的name属性。

这个struts.xml的作用就是:当页面发来请求。由struts.xml处理,跳转到对应的java处理程序,然后通过java处理程序跳转到对应的result页面


然后,我们看LoginAction.java:

package org.crazyit.app.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport
{
	//定义封装请求參数的username和password属性
	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;
	}
	//定义处理用户请求的execute方法
	public String execute() throws Exception
	{
		//当username为crazyit.org。password为leegang时即登录成功
		if (getUsername().equals("crazyit.org")
			&& getPassword().equals("leegang") )
		{
			ActionContext.getContext().getSession()
				.put("user" , getUsername());
			return SUCCESS;
		}
		else
		{
			return ERROR;
		}
	}
}
在LoginAction.java中我们定义了两个属性:username和password,而且定义了一个execute()方法,这种方法是默认的sruts处理方法

在这个execute方法中,我们定义了一个处理的逻辑,

这个逻辑规定username和password等于XXX的时候,利用ActionContext.getContext().getSession().put()函数,加入一个属性user。内容为:getUsername()。

而且。return SUCCESS。

这里的SUCCESS相应的就是struts.xml中的<result name="success">/welcome.jsp</result>


PS:须要注意的一点。我们能够return不论什么的一个字符串,仅仅要在struts.xml中有与其相应的result就可以。

这里是由于继承了ActionSuppot,所以SUCCESS没有加上双引號,由于SUCCESS在ActionSuppot中默觉得“success"字符串。


然后,我们运行:http://localhost:8080/Struts2Demo/login.jsp就能够运行相关的操作了




版权声明:本文博主原创文章,博客,未经同意不得转载。

原文地址:https://www.cnblogs.com/mengfanrong/p/4869414.html