`
jasondxh
  • 浏览: 1401 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

SSH例子

    博客分类:
  • java
阅读更多

最近在做一个SSH整合注册的小例子,老是出错!!!

我把自己做的步骤写出来,希望大家能帮忙解决,谢谢!!!

 

1、在myeclipse建立一个web project,名为ssh7

2、添加struts2支持

 

 

3、添加spring支持


 

4、添加hibernate支持

 

 

 

 

 

5、反转生成pojo对象及映射文件



 

 

6、编写Dao层,并添加到spring bean配置中

 

   UserDao.java

/**
 * @author  Jason
 * @date    2011-4-11上午10:43:47
 */
package com.dao;

import com.model.User;

public interface UserDao {
	public Integer save(User user);
}

 

 UserDaoImpl.java

/**
 * @author  Jason
 * @date    2011-4-11上午10:46:21
 */
package com.dao.impl;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.dao.UserDao;
import com.model.User;

public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

	public Integer save(User user) {
		return (Integer) getHibernateTemplate().save(user);
	}
}

 

在applicationContext.xml中加入

	<!-- 反射注入Dao层 -->
	<bean id="userDao" class="com.dao.impl.UserDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

 

 7、编写service层,并在spring中配置bean

 

  UserService.java

/**
 * @author  Jason
 * @date    2011-4-11上午10:50:01
 */
package com.service;

public interface UserService {
	public boolean register(String username, String password);
}
 

 UserServiceImpl.java

/**
 * @author  Jason
 * @date    2011-4-11上午10:55:29
 */
package com.service.impl;

import com.dao.UserDao;
import com.model.User;
import com.service.UserService;

public class UserServiceImpl implements UserService {
	private UserDao userDao;

	public UserDao getUserDao() {
		return userDao;
	}

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	public boolean register(String username, String password) {
		User user = new User();
		user.setName(username);
		user.setPassword(password);
		int result = userDao.save(user);
		if (result > 0) {
			return true;
		} else {
			return false;
		}
	}
}

 

在applicationContext.xml注入bean

<!-- 反射注入service层 -->
	<bean id="userService" class="com.service.impl.UserServiceImpl">
		<property name="userDao" ref="userDao"></property>
	</bean>

 

8、编写action类

 

RegisterAction.java

/**
 * @author  Jason
 * @date    2011-4-11上午11:05:24
 */
package com.action;

import com.opensymphony.xwork2.ActionSupport;
import com.service.UserService;

public class RegisterAction extends ActionSupport {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String username;
	private String password;
	private UserService userService;

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

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public String execute() {
		if (userService.register(getUsername(), getPassword())) {
			return SUCCESS;
		} else {
			return ERROR;
		}
	}
}

 

 9、编写视图资源

 

register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
	<head>
		<title>注册页面</title>
	</head>
	<body>
		<s:form action="register" method="post">
			<h2>
				注册
			</h2>
			<s:div>
				<s:textfield name="username" label="用户名" size="20"></s:textfield>
				<s:password name="password" label="密码" size="20"></s:password>
				<s:submit value="注册"></s:submit>
			</s:div>
		</s:form>
	</body>
</html>

 

 success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
	<head>
		<title>注册成功页面</title>
	</head>
	<body>
		注册成功!
	</body>
</html>

 

 error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
	<head>

	</head>
	错误!
</html>

 

10、配置struts.xml中action与视图资源的对应关系,把spring启动配置到web.xml

 

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="ssh" extends="struts-default">
		<!-- 定义处理用户请求的Action,指定该Action的实现类-->
		<action name="register" class="com.action.RegisterAction">
			<!-- 为两个逻辑视图配置视图页面 -->
			<result name="error">/error.jsp</result>
			<result name="success">/success.jsp</result>
		</action>
	</package>
</struts>    

 

 web.xml

<?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">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<!-- spring配置-->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>WEB-INF/classes/applicationContext.xml</param-value>
	</context-param>
	<!-- 使用ContextLoaderListener初始化Spring容器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

 

 11、最后附上applicationContext.xml配置及工程结构图

 

applicationContext.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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/test"></property>
		<property name="username" value="root"></property>
		<property name="password" value="123"></property>
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/model/User.hbm.xml</value>
			</list>
		</property>
	</bean>
	<!-- 反射注入Dao层 -->
	<bean id="userDao" class="com.dao.impl.UserDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<!-- 反射注入service层 -->
	<bean id="userService" class="com.service.impl.UserServiceImpl">
		<property name="userDao" ref="userDao"></property>
	</bean>
</beans>
 

项目图

 

12、发布运行项目



 运行结果出现异常,错误信息如下

 

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
	com.action.RegisterAction.execute(RegisterAction.java:44)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
	com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
	com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
	org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
	org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
	org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.

Apache Tomcat/6.0.29

 

麻烦大家看看,我这是哪里出错了!

当我在userDaoImpl.java里做单元测试时,是可以连接到插入到数据库的。测试代码如下

 

@Test
	public void saveTest() {
		User user = new User();
		user.setName("aaddd");
		user.setPassword("bb");
		ApplicationContext ctx = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		UserDao userDao = (UserDao) ctx.getBean("userDao");
		userDao.save(user);
	}

 

所以我觉得应该是spring出错,但不知道怎么搞!!!!!抓狂!!!!!!都搞了差不多两天了,网上的例子都乱七八糟的,改都改不了。。。

 

项目下载地址:

  • 大小: 50.1 KB
  • 大小: 90.7 KB
  • 大小: 124.9 KB
  • 大小: 54.2 KB
  • 大小: 82.6 KB
  • 大小: 61.5 KB
  • 大小: 65.6 KB
  • 大小: 69.9 KB
  • 大小: 44.4 KB
  • 大小: 89.7 KB
  • 大小: 74.4 KB
  • 大小: 53.9 KB
  • 大小: 46.9 KB
  • 大小: 14.6 KB
  • 大小: 29.5 KB
分享到:
评论
2 楼 aoxiang201 2012-08-31  
需要增加以下代码:
<bean name="/register" class="com.action.RegisterAction">
<property name="userService" ref="userService"></property>
</bean>
1 楼 VMare1 2012-07-21  
<bean id="userAction" class="com.action.RegisterAction">
<property name="userService" ref="userService"></property>
</bean>
这个没加

相关推荐

    经典SSH例子

    在"经典SSH例子"中,通常会展示如何整合这三个框架来构建一个完整的应用。例如,Struts2作为前端控制器,接收HTTP请求并转发到相应的Action;Spring作为整体的容器,管理所有bean的生命周期和依赖关系,同时也负责...

    SSH例子+AOP例子

    总结起来,SSH例子+AOP例子展示了如何使用Java的SSH框架进行数据操作,特别是增加操作,同时利用AOP来处理如事务管理和日志记录等横切关注点,提高了代码的可维护性和模块化程度。通过学习和实践这样的例子,开发者...

    基于maven的ssh例子

    总的来说,这个基于Maven的SSH例子是一个很好的学习资源,它可以帮助开发者了解如何将这三个框架集成到一起,实现一个完整的Java Web应用。通过实践这个例子,你可以深入理解Maven的依赖管理,以及SSH框架在实际项目...

    SSH例子执行增删改查 刚接触ssh学习的一个很好的例子

    这个SSH例子是一个初学者入门SSH框架的实践项目,它包括了四个基本的数据操作:添加(Add)、删除(Delete)、修改(Modify)和查询(Query)。SSH在这里指的是Spring、Struts和Hibernate三个开源框架的组合,它们是...

    ssh例子带数据库

    总的来说,这个SSH例子带数据库的压缩包提供了一个完整的从用户界面到数据库的交互示例,涵盖了前端请求处理、业务逻辑处理和数据存储的主要环节。对于想要学习SSH框架的开发者来说,这是一个非常实用的起点,可以...

    rapid的ssh例子

    这个“Rapid SSH例子”可能是指使用SSH进行快速开发或自动化操作的一个示例。SSH通常与Linux和Unix系统相关联,但在Java等跨平台语言中,也可以通过库如JSch来实现SSH连接。 【描述】"Rapid的SSH例子,现有的数据库,...

    SSH整合例子(SSH例子)

    在这个"SSH整合例子"中,我们能看到如何将这三个强大的框架协同工作,构建出一个完整的Web应用程序。 首先,让我们深入了解一下Spring。Spring的核心在于控制反转(IoC)和AOP。IoC通过容器管理对象的生命周期和...

    全注解SSH例子

    【全注解SSH例子】是针对初级程序员设计的一个学习资源,旨在帮助他们更好地理解和应用企业级开发中的常用框架。SSH,即Struts、Spring和Hibernate,是Java Web开发中的三大核心框架,它们协同工作,提供了高效、...

    SSH例子 适合新手学习

    SSH是Java Web开发中常用的三大框架的组合,包括Struts、Spring和Hibernate。这个整合的例子是为初学者设计的,旨在帮助...通过实践这个SSH例子,你将能更好地理解如何在实际项目中应用这些框架,提升你的开发技能。

    用户与角色的ssh例子

    在这个项目中,"用户与角色的ssh例子" 提供了一个实际的示例,展示了如何在SSH框架下实现用户管理和角色权限控制。 Struts2是MVC(模型-视图-控制器)设计模式的实现,它负责处理HTTP请求,调度业务逻辑,并将结果...

    一个配置好的SSH例子

    在这个"一个配置好的SSH例子"中,我们将探讨SSH框架的基本配置和工作原理。 首先,Struts2是基于MVC设计模式的Web框架,用于处理HTTP请求并展示结果。其核心组件包括Action、Result、Interceptor等。Action是业务...

    ssh 例子 有问题 www.willvc.com.cn 能联系到我

    ssh 例子 ssh 例子 有问题 www.willvc.com.cn 能联系到我

    JBPM+SSH例子

    【JBPM+SSH例子】是将企业级工作流管理系统JBPM与Spring、Struts和Hibernate(SSH)这一经典Java Web开发框架相结合的应用实例。SSH框架因其分层设计、灵活配置和强大的功能在Java社区中广泛使用,而JBPM则是一个...

    一个SSH例子

    在这个SSH例子中,我们将深入探讨SSH的工作原理以及如何使用它。 **SSH工作原理** SSH基于客户端-服务器架构,其主要工作流程包括身份验证、密钥交换和加密通信三个阶段: 1. **身份验证**:客户端连接到服务器时...

    SSH例子完整项目

    SSH例子完整项目是一个适合初学者学习的Java Web开发实践项目,它涵盖了Struts1、Hibernate和Spring这三大框架的整合应用。这个项目旨在帮助开发者理解如何在实际开发中结合使用这三个流行的技术,以构建一个完整的...

    JAVA+很好的ssh例子,是开始学习的示范性项目Java源码

    SSH在Java开发中是一个非常重要的概念,全称为Spring、...总之,这个"JAVA+很好的ssh例子"是一个宝贵的学习资源,通过深入研究和实践,你可以快速掌握Java企业级开发的核心技术,并为自己的职业道路打下坚实的基础。

    ssh例子

    这个"ssh例子"很可能是关于如何在编程环境中使用SSH进行通信或管理远程服务器的一个示例项目。在这个示例中,我们可能会看到如何配置SSH密钥对、使用SSH命令行工具,以及可能涉及的编程库,如JSch或Apache MINA,来...

Global site tag (gtag.js) - Google Analytics