Struts2 笔记(一)Struts2下的HelloWorld

刚学习web开发,肯定会有很多不对的地方,请一定要提出。

 

最近学习Struts2,看介绍说Struts2是WebWork的升级,与Struts1差距很大。

今天看着书做了个简单的例子,

从这个例子看来与Struts1的机制似乎还是很接近的。都是把提交的请求先发送到一个代理类,然后根据配置文件,找到Action.

只是现在2的Action不在是继承的理念了,使用了接口的实现。

接口的好处就不说了。

现在2中的方法也不再像1那样需要(ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse)如此多的参数了。

只需要实现Acion.我没用过webwork,对Struts1有所了解,所以学习时常会和1比较。

 

登录例子:

 

一.先导入Struts2的核心包

 

(commons-logging.jar,freemarker.jar,ognl.jar,struts2-core.jar,xwork.jar)

 

注意:Struts 2 应用默认需要Java 5 运行时环境,需要支持 Servlet API 2.4

 

二.编辑Web.xml,配置Struts2的核心文件

 

<?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">
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	  <welcome-file-list>
	    <welcome-file>index.jsp</welcome-file>
	  </welcome-file-list>
</web-app>

 

这样就配置了基于Struts的基本web应用了。但有请求时,FilterDispatcher类将会起拦截作用,并分析请求。

下面类编辑MVC框架。

 

三.页面请求。

 

我们写个jsp页面来发送请求,就已登录功能为例。

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>   
    <title>Struts2学习</title>	
  </head>
    <body>
   <form action="login.action" method="post">
    <table align="center">
    <caption>Logging</caption>
    	<tr>
    		<td>UserNaem:<input type="text" name="username"/></td>
    		
    	</tr>
    	<tr>
    		<td>UserPwd:<input type="password" name="userpwd"/></td>
    	</tr>
    	<tr align="center">
    		<td colspan="2"><input type="submit" value="submit"/><input type="reset" value="reset"/></td>
    	</tr>
    </table>
  </form>
  </body>
</html>

 

我们看这个登陆表单的action属性:login.action。2中默认以.action后缀。这个时候FilterDispatcher就将自动起作用,

拦截请求,并分析表单数据,然后请求到对应的Action.

 

这时候我们还需要一个控制器,来接收处理请求。

 

四.实现控制器

 

控制器是MVC框架的核心,他处理页面的请求,根据不同结果,返回给页面数据,跳转页面。

 

2中的控制器比1简单多了,他看上去就如同一个普通的类。不再像1那样继承了,他就是一个包涵execute方法的普通类。

这样Action 就可以继承其他的类。

 

import com.opensymphony.xwork2.ActionContext;

public class LoginAction {
	private String username;
	private String userpwd;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getUserpwd() {
		return userpwd;
	}
	public void setUserpwd(String userpwd) {
		this.userpwd = userpwd;
	}
	
	public String execute() throws Exception{
		
		if(getUsername().equals("mryang")
				&&getUserpwd().equals("111")){
			ActionContext.getContext().getSession().put("user", getUsername());
			return "success";
		}else{
			return "error";
		}
	}
}

 

 

 

这个类有2个属性:Username和Userpwd,和一个execute() 方法,和普通类没什么两样.execute方法就是判断

如果Username为'mryang'并且userpwd为'111'就返回"success",并把用户名保存到Session,反之返回"error".

 

这就是2中的一个简单的控制器。

 

但他怎么和页面发生关系的呢?怎么跳转页面呢?

和1一样,还需要一个配置。

 

五.配置Action.

 

没有配置,请求就找不到Action.Struts2的Action除了处理请求外,还要处理结果与资源映射。

 

这些都离不开配置---也就是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>
	<!-- package name指定项目名,extends="struts-default" -->
	<package name="javaStrutstwo" extends="struts-default">
		<!-- action name与页面请求对应,class指定请求到哪个Action -->
		<action name="login" class="com.sccin.web.control.LoginAction">
			<!--处理结果,与Action中返回的字符串对应 -->
			<result name="error">/error.jsp</result>
			<result name="success">/success.jsp</result>
		</action>
	</package>
</struts>

 

一个package节点,name属性为项目属性,extends为"struts-default",这个不改。

package节点下就是配置Action,name属性值与页面请求一致,class为action的路径。

result 是结果处理。action中返回的字符串在配置文件中一定要对应。

 

 

这样只需要在有个error.jsp和success.jsp页面这个web应用就完成了。

 

success.jsp

<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="utf-8"%>
<%@ page isELIgnored="false" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  	<title>WELCOME</title>
  </head>
  
  <body>
   登录成功:欢迎
  ${sessionScope.user }
  </body>
</html>

 

error.jsp

 

<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="UTF-8"%>
<html>
  <head>
    <title>登录失败</title>
  </head>
  <body>
    登录失败
  </body>
</html>

 

 

Struts2的页面请求应用的流程就是这样

 

 

 

非常的简单吧。如果要添加其他请求只需要增加Action,配置Action就行了。

 

接下了,迫不及待的往下学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值