Spring与Struts整合之让Spring管理控制器操作示例

作者:cakincqm 时间:2022-08-22 12:53:46 

本文实例讲述了Spring与Struts整合之让Spring管理控制器操作。分享给大家供大家参考,具体如下:

一 Web配置


<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
 http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
 <!-- 使用ContextLoaderListener初始化Spring容器 -->
 <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener
   </listener-class>
 </listener>
 <!-- 定义Struts 2的FilterDispathcer的Filter -->
 <filter>
   <filter-name>struts2</filter-name>
   <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 </filter>
 <!-- FilterDispatcher用来初始化Struts 2并且处理所有的WEB请求。 -->
 <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
 </filter-mapping>
</web-app>

二 applicationContext.xml配置


<?xml version="1.0" encoding="GBK"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
 <!-- 定义一个业务逻辑组件,实现类为MyServiceImp -->
 <bean id="myService"
   class="org.crazyit.app.service.impl.MyServiceImpl"/>
 <!-- 让Spring管理的Action实例,并依赖注入业务逻辑组件 -->
 <bean id="loginAction" class="org.crazyit.app.action.LoginAction"
   scope="prototype" p:ms-ref="myService"/>
</beans>

三 视图

1 loginForm.jsp


<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>登录页面</title>
</head>
<body>
<h3>用户登录</h3>
<s:form action="login">
 <s:textfield name="username" label="用户名"/>
 <s:textfield name="password" label="密码"/>
 <tr align="center">
   <td colspan="2">
   <s:submit value="登录" theme="simple"/>
   <s:reset value="重设" theme="simple"/>
   </td>
 </tr>
</s:form>
</body>
</html>

2 welcome.jsp


<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>成功页面</title>
</head>
<body>
 您已经登录!<br/>
 <s:actionmessage />
</body>
</html>

3 error.jsp


<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>错误页面</title>
</head>
<body>
 您不能登录!
</body>
</html>

四 Struts配置


<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- Struts 2配置文件的根元素 -->
<struts>
 <!-- 配置了系列常量 -->
 <constant name="struts.i18n.encoding" value="GBK"/>
 <constant name="struts.devMode" value="true"/>
 <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
 <package name="lee" extends="struts-default">
   <!-- 定义处理用户请求的Action,该Action的class属性不是实际处理类
     , 而是Spring容器中的Bean实例的ID -->
   <action name="login" class="loginAction">
     <!-- 为两个逻辑视图配置视图页面 -->
     <result name="error">/WEB-INF/content/error.jsp</result>
     <result>/WEB-INF/content/welcome.jsp</result>
   </action>
   <!-- 让用户直接访问该应用时列出所有视图页面 -->
   <action name="*">
     <result>/WEB-INF/content/{1}.jsp</result>
   </action>
 </package>
</struts>

五 action


package org.crazyit.app.action;
import com.opensymphony.xwork2.ActionSupport;
import org.crazyit.app.service.*;
public class LoginAction extends ActionSupport
{
 // 下面是用于封装用户请求参数的两个成员变量
 private String username;
 private String password;
 // 系统所用的业务逻辑组件
 private MyService ms;
 // 设值注入业务逻辑组件所必需的setter方法
 public void setMs(MyService ms)
 {
   this.ms = ms;
 }
 // username的setter和getter方法
 public void setUsername(String username)
 {
   this.username = username;
 }
 public String getUsername()
 {
   return this.username;
 }
 // password的setter和getter方法
 public void setPassword(String password)
 {
   this.password = password;
 }
 public String getPassword()
 {
   return this.password;
 }
 // 处理用户请求的execute方法
 public String execute() throws Exception
 {
   // 调用业务逻辑组件的validLogin()方法
   // 验证用户输入的用户名和密码是否正确
   if (ms.validLogin(getUsername(), getPassword()) > 0)
   {
     addActionMessage("哈哈,整合成功!");
     return SUCCESS;
   }
   return ERROR;
 }
}

六 Service

1 接口


package org.crazyit.app.service;
public interface MyService
{
 int validLogin(String username , String pass);
}

2 实现类


package org.crazyit.app.service.impl;
import org.crazyit.app.service.*;
public class MyServiceImpl implements MyService
{
 public int validLogin(String username , String pass)
 {
   // 此处只是简单示范,故直接判断用户名、密码是否符合要求
   if ( username.equals("crazyit.org")
     && pass.equals("leegang") )
   {
     return 99;
   }
   return -1;
 }
}

七 测试

Spring与Struts整合之让Spring管理控制器操作示例

Spring与Struts整合之让Spring管理控制器操作示例

希望本文所述对大家java程序设计有所帮助。

来源:https://blog.csdn.net/chengqiuming/article/details/101629115

标签:Spring,Struts,管理控制器
0
投稿

猜你喜欢

  • Android 使用 okhttp3和retrofit2 进行单文件和多文件上传

    2023-04-29 07:33:22
  • 提升java开发效率工具lombok使用争议

    2022-06-22 03:08:18
  • SpringBoot+WebSocket实现多人在线聊天案例实例

    2022-08-22 11:53:08
  • java实现udp通讯的代码

    2022-07-18 13:28:52
  • Unity使用LineRender断笔写字

    2023-01-07 09:29:38
  • 基于Java实现双向链表

    2022-11-17 11:39:16
  • 使用Files.walkFileTree遍历目录文件

    2021-09-27 06:12:40
  • SpringBoot配置文件中密码属性加密的实现

    2022-07-08 18:32:03
  • C++实现堆排序实例介绍

    2022-06-05 12:33:54
  • Android 拍照后返回缩略图的两种方法介绍

    2023-02-06 02:06:28
  • spring mvc中@RequestBody注解的作用说明

    2022-04-07 14:15:02
  • 利用OPENCV为android开发畸变校正的JNI库方法

    2021-10-06 17:33:27
  • 区分C# 中的 Struct 和 Class

    2022-09-10 19:51:25
  • java实现微信小程序登录态维护的示例代码

    2023-08-22 18:29:46
  • Spring中的两种代理JDK和CGLIB的区别浅谈

    2023-01-04 19:05:05
  • Java 十大排序算法之计数排序刨析

    2023-11-28 19:21:26
  • Ireport的安装与使用教程

    2021-08-08 00:16:43
  • Java线程同步机制_动力节点Java学院整理

    2023-08-01 10:29:47
  • android采用FFmpeg实现音频混合与拼接剪切

    2023-10-04 06:51:24
  • Linux下JDK安装教程

    2022-04-08 18:04:46
  • asp之家 软件编程 m.aspxhome.com