spring+struts1

概括及介绍:

集成原理:在Action 中获得BeanFactory,通过BeanFactory取得业务逻辑对象

本例采用:JDK1.8,tomcat7.0.9
  技术点:spring与strut1集成方案例子介绍
  

集成原理:在Action 中获得BeanFactory,通过BeanFactory取得业务逻辑对象

1、spring和struts1的依赖包管理

   * struts1
   -- 拷贝struts1和jstl的依赖包
   -- 在web.xml文件中配置 ActionServlet
   -- 提供 struts-config.xml 文件
   -- 提供国际化支持,提供缺省国际化资源文件
   * spring
   -- 拷贝spring相关依赖包
   -- 提供spring的配置文件

 2、在web.xml文件中配置ContextLoaderListener,让web server	在启动的时候
   BeanFactory 放到serverletContext中提高效率。

	  <!-- 在web.xml中通过contextConfigLocation配置spring,
	  contextConfigLocation参数定义了要装入的 Spring 配置文件。  -->
	    <param-name>contextConfigLocation</param-name>
	    <param-value>classpath:applicationContext1.xml</param-value>
	  </context-param>
	  <listener>
	    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	  </listener>
3、 在action中采用 	 WebApplicationContextUtils.getRequiredWebApplicationContext() 从
  ServletContext 中取得BeanFactory。
4. BeanFactory从业务逻辑中取得对象

	存在缺点:
	  (主动查找存在问题,存在对象依赖。)Action中存在了依赖查找,所以action 依赖 spring 的 API。
	     进一步了解依赖查找和依赖注入

一、项目架构截图

二、代码接口介绍

1、strut1中LoginActionForm 获得前台提交数据

2、定义模拟验证登录接口:UserManager

3、实现登录接口实现类:UserManagerImpl

4、strut1的Action:LoginAction

5、spring的配置文件:applicationContext1.xml

6、strut1配置文件:struts-config.xml

7、strut1中web.xml文件

8、欢迎页:index.jsp

9、登录页:login.jsp

10、登录成功页:success.jsp

三、代码

1、strut1中LoginActionForm 获得前台提交数据

package com.tycoon.usermanager.forms;

import org.apache.struts.action.ActionForm;

/**
 *
 * LoginActionForm
 * @author northEastTycoon
 */
public class LoginActionForm extends ActionForm {

	private static final long serialVersionUID = 1L;

	// 用户名称
	private String username="northEastTycoon";

	// 用户密码
	private String password="northEastTycoon";

	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;
	}
}

2、定义模拟验证登录接口:UserManager

package com.tycoon.usermanager.manager;

/**
 *
 * UserManager :模拟登陆接口
 * @author northEastTycoon
 */
public interface UserManager {

	public void login(String username,String password);
}

3、实现登录接口实现类:UserManagerImpl

package com.tycoon.usermanager.manager;

/**
 *
 * UserManager :实现模拟登陆接口类
 * @author northEastTycoon
 */
public class UserManagerImpl implements UserManager {

	@Override
	public void login(String username, String password) {
		System.out.println(this.getClass()+",username:"+username);

	}

}

4、 strut1的Action:LoginAction

package com.tycoon.usermanager.web.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.tycoon.usermanager.forms.LoginActionForm;
import com.tycoon.usermanager.manager.UserManager;

/**
 *
 * Action类 :控制类
 * @author northEastTycoon
 */
public class LoginAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		LoginActionForm laf = (LoginActionForm) form;
		String username = laf.getUsername();
		String password = laf.getPassword();

		// 由于耗时,还可以从ServletContext获得BeanFactory对象
		BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
		UserManager userManager = (UserManager)factory.getBean("userManager");
		userManager.login(username, password);

		return mapping.findForward("success");
	}

}

5、 spring的配置文件:applicationContext1.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"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
	<bean id="userManager" class="com.tycoon.usermanager.manager.UserManagerImpl"/>
</beans>

6、strut1配置文件:struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
 "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
	<form-beans>
		<form-bean name="loginForm"
			type="com.tycoon.usermanager.forms.LoginActionForm"></form-bean>
	</form-beans>
	<action-mappings>
		<action path="/login" type="com.tycoon.usermanager.web.action.LoginAction"
			name="loginForm" scope="request">
			<forward name="success" path="/success.jsp"></forward>
		</action>
	</action-mappings>
	<message-resources parameter="MessageResources" />
</struts-config>

7、strut1中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/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.4">
  <welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <context-param>
  <!-- 在web.xml中通过contextConfigLocation配置spring,
  contextConfigLocation参数定义了要装入的 Spring 配置文件。  -->
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext1.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
</web-app>

8、欢迎页:index.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
	<h1>Spring+struts1(东北大亨实例)</h1>
	<hr>
	<hr>
	<a href="login.jsp">登录</a>
</body>
</html>

9、登录页:login.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
	pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
	<form action="login.do" method="post">
		用户:<input type="text" name="username"><br> 密码:<input
			type="password" name="password"><br> <input
			type="submit" value="登录">
	</form>
</body>
</html>

10、  登录成功页:success.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
	${loginForm.username},用户登录成功!
</body>
</html>

运行截图:

1、请求欢迎页面

2、点击登录,跳转到登录页面

3、显示成功后页面

原文地址:https://www.cnblogs.com/northeastTycoon/p/9856517.html

时间: 2024-10-18 09:21:10

spring+struts1的相关文章

hibernate3 spring3 struts1

公司近期要上OA项目,SB供应商用的hibernate spring struts1搭建的框架,然后在这三个框架基础上扩展了自己的技术,SB供应商的开发是个老油条,拽得跟个二五八万一般,不管问什么,都爱理不理的,只能自己搭一套简易的框架练练手. web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSch

框架2

1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用: 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码. 2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现.他很大程度 的简化DAO层的编

【转载】Hybrid APP了解

原文:http://uikoo9.com/blog/detail/hpp 不错的hybrid app框架:http://www.dcloud.io/case/#group-1 HPP hybirdApp或者hbuilderApp, 指通过html,css,js语言开发出ios和android两个版本的APP, 开发效率成倍上升,开发时间大幅缩减,开发成本同样也大大缩减. 移动互联网时代,还有多少中小公司没有自己的app,原因何在? 1.中小公司有多少? 这个都不需要引用相关数据,想想一句话就明白

【HPP开发】让所有中小企业拥有自己的APP

HPP hybirdApp或者hbuilderApp, 指通过html,css,js语言开发出ios和android两个版本的APP, 开发效率成倍上升,开发时间大幅缩减,开发成本同样也大大缩减. 移动互联网时代,还有多少中小公司没有自己的app,原因何在? 1.中小公司有多少? 这个都不需要引用相关数据,想想一句话就明白了, "一将功成万骨枯",这句话同样适合创业者,普通人耳熟能详的大公司已经很多了, 可以想象下中小公司有多少,数量极多极多. 2.大部分中小公司没有自己app 迫于a

java面试题之ssh

1.写出你熟悉的开源框架以及各自的作用(项目中为什么使用SSH) 答:框架:hibernate,spring,struts1/struts2. Hibernate主要用于数据持久化:封装了JDBC操作:还提供了一个易用的.高效率的对象关系映射框架: Spring 的控制反转能起到解耦合的作用: Struts 主要用于请求处理的流程控制:struts是基于MVC模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现:struts有着丰富的taglib,如能灵活运用,则能大大提高开发效率

servlet/struts1/struts2/spring mvc 的线程安全问题

线程安全的概念: 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 线程安全问题都是由全局变量及静态变量引起的. 若每个线程中对全局变量.静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的:若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全. 在Java里,线程安全一般体现在两个方面:  1.多个thread对同一个java

Struts1.X与Spring集成——第二种方案

上篇博客介绍了Struts1.X与Spring集成的一种方案.Struts1.X与Spring集成--第一种方案 此篇博客还以上篇博客的登录例子为例,介绍Struts1.X与Spring集成的另一种方案. 1,第一种方案 原理 回忆第一种方案集成原理:在Action中取得BeanFactory,通过BeanFactory取得业务逻辑对象 此种方案的缺点:从严格意义的分层上来看,Action上看到了Spring的相关东西,依赖Spring API去查找东西,发生了依赖查找,因为要查找依赖对象,所以

Struts1.X与Spring集成——第一种方案

spring+struts(第一种方案) 集成原理:在Action中取得BeanFactory,通过BeanFactory取得业务逻辑对象,调用业务逻辑方法. 一,新建一个项目Spring_Struts_01 二,步骤 1.spring和Struts的依赖包配置 *Struts (1)拷贝Struts和jstl的依赖包 (2)在web.xml文件中配置ActionServlet <span style="font-family:KaiTi_GB2312;font-size:18px;&qu

Spring与Struts1整合方式之通过Spring的DelegatingActionProxy类

Spring提供了DelegatingActionProxy类,用来代理Struts中的Action,负责在Spring配置文档中查找对应的Action映射,从而把Struts的Action与Spring分离开,并把Struts的动作置于Spring框架的控制之下. 1.创建web工程,将需要的资源包导入工程的WEB-INF/lib下,所需要的资源包包括:commons-beanutils- 1.8.0.jar.commons-chain-1.2.jar.commons-digester-1.8