一直都是半解半知的情况下动手去实现某些功能,但是竟然也可以成功,

而我发现你花2小时听视频看所谓的理论,不如花2小时直接做个功能出来,

更加深了对此框架的理解,中间遇到问题后,可以上网再查详细的知识点,

这样掌握起来更快更牢固-----一个初级菜鸟的认识

1、struts2+Spring+hibernate环境搭建

jar包:myeclipse加的所有支持都不使用里面的jar,jar统一用我本地的备份,链接:http://pan.baidu.com/s/1hsFZ8PI 密码:xtl4

先创建webProject,填写项目名称,点击finish即可

拷贝jar进WebRoot-WEB-INF-lib目录,webproject是直接会加载这些jar的

我一般会先把所用的package先建好,省事,清晰,action放struts的业务处理,dao持久化操作,service业务层,entity实体类

添加支持struts支持:项目-右键-myeclipse-add struts capabilities

添加Spring支持:项目-右键-myeclipse-add Spring capabilities

在添加hibernate依赖之前,你得先把数据源连接添加好

添加hibernate支持:项目-右键-myeclipse-add hibernate capabilities

生成实体类

OK,环境已好,不过要在web.xml中添加spring支持,否则就会报错SSH框架环境搭建问题:Line: 230 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:230:-1

<!-- Spring配置文件位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param> <!-- Spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

至此,环境已配置好了,可以启动下tomcat看一下,如果没报错,基本上就是OK了

现在来看一下项目的目录结构

其实这里看得出,hibernate与spring已在配置上整合了,我们看一下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://localhost:3306/role"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></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>entity/User.hbm.xml</value></list>
</property></bean>
<!-- <bean id="UserDAO" class="entity.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean> --></beans>

接下来就轮到编码了

(1)jsp页面编写login.jsp和main.jsp

(2)dao层:登陆接口

dao层实现类

package dao.impl;

import java.util.List;

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

import dao.LoginDao;
import entity.User; public class LoginDaoImpl extends HibernateDaoSupport implements LoginDao { @Override
public boolean login(String username, String password) {
List<User> u = this.getHibernateTemplate().find("from User where username=?and password=?", username,password);
boolean flag = false;
if(u.size() >0){
flag = true;
}else{
flag = false;
}
return flag;
} }

(3)service:service.impl

LoginServiceImpl.java

package service.impl;

import dao.LoginDao;
import service.LoginService; public class LoginServiceImpl implements LoginService {
private LoginDao loginDao; public void setLoginDao(LoginDao loginDao) {
this.loginDao = loginDao;
} @Override
public boolean login(String username, String password) {
return loginDao.login(username, password);
} }

(4)该struts的action了。我们先来配置struts吧

struts.xml,这里的action name名称要与jsp里form的action名称一致

<?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="default" extends="struts-default" namespace="/">
<action name="login" class="action.LoginAction">
<result name="success">/main.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>

开始写LoginAction.jsp

package action;

import service.LoginService;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
//service层
private LoginService loginService;
//jsp登陆用户名name和密码name
private String username;
private String password;
public LoginService getLoginService() {
return loginService;
}
public void setLoginService(LoginService loginService) {
this.loginService = loginService;
}
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 String login(){
boolean flag = loginService.login(username, password);
if(flag){
return SUCCESS;
}else{
return INPUT;
}
}
}

以上脚本算是完成了,接下来要添加spring的各层依赖注入了,完整理的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://localhost:3306/role"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></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>entity/User.hbm.xml</value></list>
</property></bean>
<!-- 添加dao层依赖 sessionFactory持久化-->
<bean id="userdao" class="dao.impl.LoginDaoImpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean> <!-- 添加service层的依赖 -->
<bean id="userservice" class="service.impl.LoginServiceImpl">
<property name="loginDao" ref="userdao"></property>
</bean> <!-- 添加action层的依赖 -->
<bean id="useraction" class="action.LoginAction">
<property name="loginService" ref="userservice"></property>
</bean> </beans>

到此为止,所有功能完毕,启动tomcate,还是会报错

SSH框架环境搭建问题:java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required 这里是解决方案

最后,运行

最后奉上源码:

链接:http://pan.baidu.com/s/1c2w4XiC 密码:gk3v

SSH-简单登陆业务详解,从环境部署到代码编写的更多相关文章

  1. SSH免密登录详解

    SSH免密登录详解 SSH(Security Shell)安全外壳协议,是较为可靠的,专为远程登录会话和其他网络服务提供安全保证的协议. ​ 对于传统的网络服务程序(例如,FTP,Telnet等)来说 ...

  2. Linux实现利用SSH远程登录服务器详解

    Linux实现利用SSH远程登录服务器详解 http://www.111cn.net/sys/linux/55152.htm

  3. 前后端分离,简单JWT登录详解

    前后端分离,简单JWT登录详解 目录 前后端分离,简单JWT登录详解 JWT登录流程 1. 用户认证处理 2. 前端登录 3. 前端请求处理 4. 后端请求处理 5. 前端页面跳转处理 6. 退出登录 ...

  4. (转)Uri详解之——Uri结构与代码提取

    前言:依然没有前言…… 相关博客:1.<Uri详解之——Uri结构与代码提取>2.<Uri详解之二——通过自定义Uri外部启动APP与Notification启动> 上几篇给大 ...

  5. Uri详解之——Uri结构与代码提取

    目录(?)[+] 前言:依然没有前言…… 相关博客:1.<Uri详解之——Uri结构与代码提取>2.<Uri详解之二——通过自定义Uri外部启动APP与Notification启动& ...

  6. 【转】IOS AutoLayout详解(三)用代码实现(附Demo下载)

    转载自:blog.csdn.net/hello_hwc IOS SDK详解 前言: 在开发的过程中,有时候创建View没办法通过Storyboard来进行,又需要AutoLayout,这时候用代码创建 ...

  7. linux超级块和inode 详解 和 df 、du 命令详解与环境变量

    一.inode块,Unix文件的核心. 首先需要明白的是,在Unix操作系统中的任何资源都被当作文件来管理.如目录.光驱.终端设备等等,都被当作是一种文件.从这方面来说,Unix操作系统中的所有的目录 ...

  8. SSH 概念及使用详解

    注意:转载请注明出处:http://www.programfish.com/blog/?p=124 SSH 基本概念 SSH 英文全称是secure shell,字面意思:安全的shell. SSH协 ...

  9. 简单SSM配置详解

    SSM:spring+springMVC+Mybatis 学习网友的http://www.cnblogs.com/invban/p/5133257.html,并对其进行了详细的解说. 源码下载:htt ...

随机推荐

  1. 机器学习 之 SVM VC维度、样本数目与经验风险最小化的关系

    VC维在有限的训练样本情况下,当样本数 n 固定时.此时学习机器的 VC 维越高学习机器的复杂性越高. VC 维反映了函数集的学习能力,VC 维越大则学习机器越复杂(容量越大). 所谓的结构风险最小化 ...

  2. 行为类模式(三):解释器(Interpreter)

    定义 给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子. UML 优点 将每一个语法规则表示成一个类,方便事先语言. 因为语法由许多类表示,所以你可以轻易 ...

  3. 菜鸟学SSH(十四)——Spring容器AOP的实现原理——动态代理

    之前写了一篇关于IOC的博客——<Spring容器IOC解析及简单实现>,今天再来聊聊AOP.大家都知道Spring的两大特性是IOC和AOP,换句话说,容器的两大特性就是IOC和AOP. ...

  4. jsack

    https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr016.html#BABGHEJB

  5. iOS 开发之版本上线更新流程

    iOS 开发之版本上线更新流程   把自己app上线的流程记录下来,希望能够让自己加深印象,也能帮助到一些人便是极好的! 证书和描述文件的配置就不写了,直接配置工程吧. 大致把我自己上线的流程写一下: ...

  6. 如何使用IDEA开发工具中右键中的Git图形化工具

    首先,你的项目一定是git服务器上面down下来的,下面来演示如何使用IntelliJ IDEA 开发中在鼠标右键中提供的一个非常方便的图形化Git管理工具: 这里使用的IDEA开发工具的版本是 In ...

  7. Eclipse GBK批量转UTF-8插件

    最近需要把Android项目转Android Studio,由于之前是eclipse开发,而且坑爹的是编码还是GBK的,转到Android Studio中文都是乱码,如果一个文件一个文件ctrl+c的 ...

  8. vue监听浏览器窗口的变化,随着窗口变化调整里面table的宽高

    1.在data中设置: tableHeight:"500", screenHeight:window.innerHeight, 2.在mounted中设置: mounted() { ...

  9. 【Python】打印object对象

    print (object .__dict__) print (dir(object))

  10. java多线程14 :wait()和notify()/notifyAll()

    轮询 线程本身是操作系统中独立的个体,但是线程与线程之间不是独立的个体,因为它们彼此之间要相互通信和协作. 想像一个场景,A线程做int型变量i的累加操作,B线程等待i到了10000就打印出i,怎么处 ...