webwork+spring+ibatis MVC实践

3 篇文章 0 订阅
3 篇文章 0 订阅
              

Webwork,spring,ibatis MVC实践

现在MVCweb架构模式,已经得到了开发人员和架构师的认可.无论是在可扩展性,可维护性都能在项目中充分体现其优越性。

原理图如下所示:

              

 

我们这里的视图使用JSP

 控制器由webwork承担

 模型由ibatis承担

 Spring 完成ibatis注入到manager,managr注入到webworkaction的工作。

 基本需求是这样的,在页面上发送一封简单的邮件。

1.       首先编写一个JSP发送邮件的页面,如图所示:

 

sendMail.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'sendMail.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">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<style type="text/css">
        @import url(css/content.css);
    </style>
</head>
<body>
<table cellpadding="0" cellspacing="0" class="links">
 <tr>
  <td><a href="#">首页导读</a><a href="#">在线用户</a><a href="#">查询网友</a><a href="#">在线好友</a><a href="#">好友名单</a><a href="#">查看讯息</a><a href="#">发送讯息</a></td>
 </tr>
</table>
<hr/>
<form name="" action="member/mailAction.action" method="post">
 <table>
  <tr>
   <td>收件人:</td>
   <td>
    <input type="text" name="reviever" id="reviever"/>
   </td>
  </tr>
  <tr>
   <td>主  题:</td>
   <td>
    <input type="text" name="subject" id="subject"/>
   </td>
  </tr>
  <tr>
   <td>内  容:</td>
   <td>
    <input type="text" name="content" id="content"/>
   </td>
  </tr>
  <tr>
   <td>
    <input type="submit" name="sendMail" value="发邮件"/>
   </td>
   <td>
    <input type="reset" name="cancel" value="取  消"/>
   </td>
  </tr>
 </table>
</form>
</body>
</html>

2.编写控制层 webwork MailAction.java

 

package com.alisoft.facepay.member.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import com.alisoft.facepay.framework.bean.OrderInfo;
import com.alisoft.facepay.framework.bean.OrderService;
import com.opensymphony.webwork.interceptor.ServletRequestAware;
import com.opensymphony.xwork.ActionSupport;

public class MailAction   extends ActionSupport implements ServletRequestAware{
 private final static Logger log = Logger.getLogger(MailAction.class);
 private HttpServletRequest request;
 private OrderService orderService;
 public String execute() throws Exception {
     String reviever=this.request.getParameter("reviever");
     log.info(reviever);
     String subject=this.request.getParameter("subject");
     log.info(subject);
     String content=this.request.getParameter("content");
     log.info(content);
     OrderInfo orderInfo=new OrderInfo();
     orderInfo.setToAddress(reviever);
     orderInfo.setContent(content);
     orderService.sendOrderMail(orderInfo);
     log.info("send mail finshed!");
  return this.SUCCESS;
 }
 
 public String pageInit()throws Exception{
   return "input";
 }
 public void setServletRequest(HttpServletRequest arg0) {
  // TODO Auto-generated method stub
  this.request=arg0;
 }
 public static Logger getLog() {
  return log;
 }

 public OrderService getOrderService() {
  return orderService;
 }
 public void setOrderService(OrderService orderService) {
  this.orderService = orderService;
 }
}

想让webwork能工作正常,要配置两个文件,内容如下:

Webwork.properties

resource.loader = classpath, webapp

classpath.resource.loader.description = Classpath Template Loader
classpath.resource.loader.class = com.opensymphony.webwork.views.velocity.WebWorkResourceLoader

classpath.resource.loader.cache = false
classpath.resource.loader.modificationCheckInterval = 10

webapp.resource.loader.description = Webapp Template Loader
webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader
webapp.resource.loader.path = /

webapp.resource.loader.cache = false
webapp.resource.loader.modificationCheckInterval = 10

velocimacro.library = /macros.vm

velocimacro.library.autoreload = true

runtime.log.logsystem.class = org.apache.velocity.runtime.log.SimpleLog4JLogSystem

input.encoding = GBK

output.encoding = GBK

 

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="conf/webwork/webwork-mail.xml"/>
</xwork>

 

关于邮件发送模块的配置文件 webwork-mail.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="member" namespace="/member" extends="webwork-default"  >
        <interceptors>
            <!-- Basic stack -->
            <interceptor-stack name="memberStack">
                <interceptor-ref name="basicStack"/>
                <interceptor-ref name="autowiring"/>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="memberStack"/>
       
          <action name="mailAction" class="com.alisoft.facepay.member.action.MailAction">
            <result name="input">/sendMail.jsp</result>
            <result name="success">/index.jsp</result>
        </action>
    </package>
 </xwork>

3.服务层和持久层的编写。

3.1 邮件服务层接口

package com.alisoft.facepay.framework.bean;

public interface OrderService {
public void  sendOrderMail(OrderInfo orderInfo);
}

3.2 邮件服务层实现

package com.alisoft.facepay.framework.bean;

import org.springframework.mail.MailException;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;

public class OrderServiceImpl implements OrderService {
 private MailSender mailSender;
    private SimpleMailMessage message;
 public void sendOrderMail(OrderInfo orderInfo) {
  SimpleMailMessage msg = new SimpleMailMessage(this.message);
        msg.setTo(orderInfo.getToAddress());
        msg.setText(orderInfo.getContent());
       
        try {
   mailSender.send(msg);
  } catch (MailException e) {
   // TODO Auto-generated catch block
   System.out.println(e.getMessage());
  }

 }
 public MailSender getMailSender() {
  return mailSender;
 }
 public void setMailSender(MailSender mailSender) {
  this.mailSender = mailSender;
 }
 public SimpleMailMessage getMessage() {
  return message;
 }
 public void setMessage(SimpleMailMessage message) {
  this.message = message;
 }

}

3.3 spring 配置文件

  数据源配置文件 spring-datasource.xml

  <?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jjdbc:oracle:thin:@127.0.0.1:1521:ALISOFT"/>
    <property name="username" value="SCOTT"/>
    <property name="password" value="TIGER"/>
  </bean>
  <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation" value="classpath:conf/ibatis/SqlMapConfig.xml"/>
    <property name="dataSource" ref="dataSource"/>
  </bean>
</beans>

 邮件模块配置文件spring-mail.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 <bean id="mailSender"
  class="org.springframework.mail.javamail.JavaMailSenderImpl">
  <property name="host" value="smtp.163.com" />
  <property name="javaMailProperties">
   <props>
    <prop key="mail.smtp.auth">true</prop>
   </props>
  </property>
  <property name="username">
   <value>yema@163.com</value>
  </property>
  <property name="password">
   <value>yema</value>
  </property>
 </bean>

 <bean id="mailMessage"
  class="org.springframework.mail.SimpleMailMessage">
  <property name="from" value="demo@163.com" />
  <property name="subject" value="Your order" />
 </bean>

 <bean id="orderService"
  class="com.alisoft.facepay.framework.bean.OrderServiceImpl">
  <property name="mailSender" ref="mailSender" />
  <property name="message" ref="mailMessage" />
 </bean>
</beans>

 

 基本可以实现MVC架构的邮件发送,要想把上面的程序跑起来,需要参考webwork,spring,ibatis的配置文件。

有问题可以给我发邮件:ddviplinux@163.com。



 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值