webwork简单示例

webwork是struts2的前身,是一个mvc框架,使用方法和struts2很相似。研究webwork已经没有太大的意义,但是对于理解struts2的核心机制还是有一定意义的。下面介绍如何通过webwork2来搭建一个简单的demo。

第一步:建立maven工程,引入webwork依赖。

<dependency>
    <groupId>com.opensymphony</groupId>
    <artifactId>webwork</artifactId>
     <version>2.2.6</version>
</dependency>
<dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>javax.servlet-api</artifactId>
     <version>3.1.0</version>
 </dependency>

第二步:这里配置一个User实体,用来做简单登录和注册。

User.java

package com.xxx.webwork.entity;

public class User {
	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;
	}
	

}

 LoginAction.java

package com.xxx.webwork.action;
import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ModelDriven;
import com.xxx.webwork.entity.User;

public class LoginAction implements Action,ModelDriven {
	private User user = new User();
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	
	@Override
	public String execute() throws Exception {
		if(user.getUsername().equals("admin")&& user.getPassword().equals("123456")) {
			return SUCCESS;
		}else {	
			return ERROR;
		}
	}

	@Override
	public Object getModel() {
		return user;
	}

}

第三步:配置xwork.xml

<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" 
"http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
    <include file="webwork-default.xml"/>
    <package name="webwork" extends="webwork-default">
         <action name="admin" class="com.xxx.webwork.action.AdminAction">
              <result name="success" type="freemarker">
                 <param name="location">/WEB-INF/content/admin/index.html</param>
              </result>
         </action>
         <action name="login" class="com.xxx.webwork.action.LoginAction">
              <result name="success" type="freemarker">
                 <param name="location">/success.html</param>
              </result>
              <result name="error" type="freemarker">
                 <param name="location">/error.html</param>
              </result>
              <interceptor-ref name="model-driven"/>
              <interceptor-ref name="params"/>
         </action>
         <action name="regist" class="com.xxx.webwork.action.RegistAction">
             <result name="success" type="freemarker">
                <param name="location">/success.html</param>
             </result>
         </action>
    </package>
</xwork>

第四步:配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>webwork</display-name>
  <welcome-file-list>
      <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  <servlet>
      <servlet-name>webwork</servlet-name>
      <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>webwork</servlet-name>
      <url-pattern>*.action</url-pattern>
  </servlet-mapping>
</web-app>

第五步:编写前台页面

index.html

<!doctype html>
<html>
    <head>
       <meta charset="UTF-8"/>
    </head>
	<body>
		<div id="container">
		    <div class="main">
		        <form method="post" action="login.action">
		            <div class="box-item">
		                <label>用户名:</label>
		                <input type="text" name="username"/>
		            </div>
		            <div class="box-item">
		                <label>密码:</label>
		                <input type="password" name="password"/>
		            </div>
		            <div class="box-item">
		                <input type="submit" value="登录"/>
		            </div>
		        </form>
		    </div>
		    <a href="register.html">注册</a>
		</div>
	</body>
</html>

 success.html

<!doctype html>
<html>
    <head>
       <meta charset="UTF-8"/>
    </head>
	<body>
		<div id="container">
		   <h2>hello,welcome,${user.username}</h2>
		</div>
	</body>
</html>

error.html

<!doctype html>
<html>
    <head>
       <meta charset="UTF-8"/>
    </head>
	<body>
		<div id="container">
		   <h2>oh,sth is wrong.</h2>
		</div>
	</body>
</html>

 启动web服务器,访问首页,出现登录页:

输入admin/123456,点击登录,会跳转到成功页面,同时,显示用户名admin。如果用户名密码不对,跳转到错误页面。

 错误页面:

LoginAction中引入了模型驱动ModelDriven,这样,页面上的参数可以直接通过username,password的名字传过来封装成User对象,否则需要通过user.username,user.password来传过来。涉及到传参,一般需要在action中声明页面对应的参数。还有一种做法,就是通过request.getParameter("username")的方式获取参数,下面给出RegistAction的代码,通过该代码,了解一下如何通过request的方式获取参数。

package com.xxx.webwork.action;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ActionContext;
import com.xxx.webwork.entity.User;
public class RegistAction implements Action{

	@Override
	public String execute() throws Exception {
		HttpServletRequest request = ServletActionContext.getRequest();
		String username =(String) request.getParameter("username");
		String password = (String) request.getParameter("password");
		System.out.println("regist : "+username+" --> "+password);
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		ActionContext.getContext().put("user", user);
		return SUCCESS;
	}

}

 这种方式也就是传统Servlet获取参数的方式。为此需要在项目中引入javax.servlet:javax.servlet-api的依赖。

另外页面使用freemarker作为模板,传统的freemaker需要.ftl文件后缀,但是我们如果使用.html文件作为freemarker模板,好像也是可以的。本例中的页面全部就是html文件。

xwork.xml的配置和struts.xml的配置基本类似,但是需要引入默认的webwork-default.xml配置文件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值