刚学SSH框架写一个小实例,以便以后查看:

本案例简单的实现一个用户登录:

  数据库方面就不写了,自己领悟吧!哈哈(根据user.hbm.xml文件就知道了)

我们一般可以创建下面几个包,什么意思呢,自己悟

com.website.action.user

com.website.dao

com.website.dao.impl

com.website.entity

com.website.service

com.website.service.impl

下面开始码代码了:

com.website.entity包中User.java与user.hbm.xml

User.java

package com.website.entity;

public class User {
 
 private int userId;
 private String userName;
 private String userPassword;
 public int getUserId() {
  return userId;
 }
 public void setUserId(int userId) {
  this.userId = userId;
 }
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public String getUserPassword() {
  return userPassword;
 }
 public void setUserPassword(String userPassword) {
  this.userPassword = userPassword;
 }

}

user.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping
 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
  <class name="com.website.entity.User" table="user">
      <id name="userId" column="user_id" type="int">
          <generator class="identity"></generator>
      </id>
      <property name="userName" column="user_name" type="string"/>
      <property name="userPassword" column="user_password" type="string"/>
  </class>
</hibernate-mapping>

com.website.dao包中的UserDAO.java接口

UserDAO.java

package com.website.dao;

import com.website.entity.User;

/**
 * 所需要的user用户的DAO接口
 * 包含findUserByID,loginUser
 * @author 战旗
 *
 */
public interface UserDAO {

public User findUserById(Integer id);
 public User loginUser(User user);
}

com.website.dao.impl包中的UserDAOImpl.java

package com.website.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.website.dao.UserDAO;
import com.website.entity.User;

/**
 * userDAO 接口的实现类
 * @author 战旗
 *
 */
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO{

/**
  * @param id
  * 根据ID查找User
  * @return User
  */
 @Override
 public User findUserById(Integer id) {

User user = (User)this.getHibernateTemplate().get(User.class, id);
  return user;
 }

/**
  * @param user
  * 根据user的用户名 和 密码查找user用户,
  * 如果查到返回user,否则返回null
  * @return user
  */
 @SuppressWarnings("unchecked")
 @Override
 public User loginUser(User user) {
  //sql语句
  String hql = "from User user where user.userName='" + user.getUserName()
      + "' and user.userPassword='" + user.getUserPassword() + "'" ;
  
  List<User> users = (List<User>)this.getHibernateTemplate().find(hql);
  
  if(users.size() > 0){
   return users.get(0);
  }
  
  return null;
 }

}

com.website.service包中的UserService.java接口

package com.website.service;

import com.website.entity.User;

/**
 * User的Service接口
 * @author 战旗
 *
 */
public interface UserService {

public User findById(Integer id);
 
 public User loginUser(User user);
}

com.website.service.impl包中的UserServiceImpl.java

package com.website.service.impl;

import com.website.dao.UserDAO;
import com.website.entity.User;
import com.website.service.UserService;

/**
 *
 * @author 战旗
 *
 */
public class UserServiceImpl implements UserService{
 
 private UserDAO userDAO;

public UserDAO getUserDAO() {
  return userDAO;
 }

public void setUserDAO(UserDAO userDAO) {
  this.userDAO = userDAO;
 }

@Override
 public User findById(Integer id) {

return this.userDAO.findUserById(id);
  
 }

@Override
 public User loginUser(User user) {
  
  return this.userDAO.loginUser(user);
 }

}

最后com.website.action.user包的UserAction.java

package com.website.action.user;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.website.entity.User;
import com.website.service.UserService;

@SuppressWarnings("serial")
public class UserAction extends ActionSupport{
 
 private User user;
 private UserService userService;
 public User getUser() {
  return user;
 }
 public void setUser(User user) {
  this.user = user;
 }
 public UserService getUserService() {
  return userService;
 }
 public void setUserService(UserService userService) {
  this.userService = userService;
 }
  
 
 public String login() throws Exception{
       
   User userLogin = userService.loginUser(user);
   
   if(userLogin != null){    
    HttpServletRequest req = ServletActionContext.getRequest();
    HttpSession session = req.getSession();    
    session.setAttribute("user", userLogin);    
    return "success";
   }else{
    ActionContext.getContext().put("result", "2");
   }
  
  return "input";
 }
  
}

来一下前端吧,详细点完整点:

<s:form action="loginUserAction" method="post">
   <h2>登录</h2
   <div style="margin:5px 0px;">
    <input type="text" name="user.userName" placeholder="请输入账号..."/>    
   </div>
   <div style="margin:5px 0px;">
    <input type="password" name="user.userPassword" placeholder="请输入密码 ..."/>
   </div>
 
   <!-- 验证码的提示信息 -->
   <div id="vdmsg" style="display:inline; color: red;"></div>
   <div style="margin: 5px 0px;">
       <button type="submit" >登<span style="width:20px;"></span>录</button>       
     </div>
  </s:form>

再加上错误提示信息吧!

<script type="text/javascript">

var result = "${result}";   
   if(result == "2"){
      document.getElementById("vdmsg").innerHTML = "用户名 或 密码错误!";
   }
       
</script>

下面是整个程序的重点了,struts.xml和applicationContext.xml文件的配置:

struts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="website" extends="struts-default">
               
        <action name="*UserAction" class="userAction" method="{1}">
           <result name="success" type="redirect">/main.jsp</result>
           <result name="input">/login.jsp</result>
        </action>
        

    </package>
</struts>

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

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close">

<property name="driverClassName">
   <value>com.mysql.jdbc.Driver</value>
  </property>

<property name="url">
   <value>jdbc:mysql://localhost:3306/website</value>
  </property>

<property name="username">
   <value>root</value>
  </property>

<property name="password">
   <value>root</value>
  </property>

</bean>

<bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource">
   <ref local="dataSource" />
  </property>

<property name="mappingResources">
   <list>
    <value>com/website/entity/user.hbm.xml</value>
    <value>com/website/entity/admin.hbm.xml</value>
   </list>
  </property>

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">
     org.hibernate.dialect.MySQLDialect
    </prop>
    <prop key="hibernate.show_sql">true</prop>

</props>

</property>

</bean>

<bean id="transactionManager"
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
 
 <!-- userDao -->
 <bean id="userDao" class="com.website.dao.impl.UserDAOImpl" scope="singleton">
      <property name="sessionFactory">
          <ref bean="sessionFactory"/>
      </property>
 </bean>
 
 <bean id="userServiceTarget" class="com.website.service.impl.UserServiceImpl">
       <property name="userDAO" ref="userDao"/>
 </bean>
 
 <bean id="userService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
      <property name="target" ref="userServiceTarget"></property>
  <property name="transactionManager" ref="transactionManager"></property>

<property name="transactionAttributes">

<props>
    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="*">PROPAGATION_REQUIRED</prop>
   </props>
  </property>
 </bean>
 
 <bean id="userAction" class="com.website.action.user.UserAction"
  scope="prototype">
  <property name="userService" ref="userService"></property>
 </bean>
  
</beans>

到此就完全配置完了,web.xml的配置自己去吧配置个struts的过滤器就ok了

ssh框架的小实例(用户登录)的更多相关文章

  1. 小程序版好友对战实战-wss部署与小程序用户登录时序

    上一篇文章是对需求的分析,本次将逐渐进入代码阶段.本次主要的内容包括服务端wss的部署以及小程序端用户授权的时序及逻辑. wss的配置与部署 微信小程序出于安全考虑,要求所有涉及到网络的操作,必须使用 ...

  2. Java基础知识强化之集合框架笔记37:用户登录注册案例

    1. 登录注册案例分析图解: 2. 用户登录案例 详细分析 和 分包实现: (1)用户登录案例详细分析(面向对象思想) 按照如下的操作,可以让我们更符合面向对象思想: • 有哪些类呢?         ...

  3. Spring学习之SpringMVC框架快速搭建实现用户登录功能

    引用自:http://blog.csdn.net/qqhjqs/article/details/41683099?utm_source=tuicool&utm_medium=referral  ...

  4. 微信小程序 用户登录 服务器端(TP5.1)实现

    先来看官方提供的流程图: 客户端: 小程序客户端通过 wx.login() 获取登录code , 然后将code当做参数传递到服务器. getToken(){ var that = this; wx. ...

  5. OSGI框架—HelloWorld小实例

    OSGi(Open Service Gateway Initiative)技术是Java动态化模块化系统的一系列规范.OSGi一方面指维护OSGi规范的OSGI官方联盟,另一方面指的是该组织维护的基于 ...

  6. ubuntu(14.04) 安装ssh,并使用root用户登录

    1.apt-get install openssh-server 2.修改ssh的配置文件/etc/ssh/sshd_config 注释掉以前的:PermitRootLogin without-pas ...

  7. python入门之实例-用户登录、注册

    用户密码存储文件db(其中用户和密码之间用$符合隔开): admin$123456 root$sdfk9f24 chy$654321 代码如下: def login(username,password ...

  8. Spring3.0 与 MyBatis框架 整合小实例

    本文将在Eclipse开发环境下,采用Spring MVC + Spring + MyBatis + Maven + Log4J 框架搭建一个Java web 项目. 1. 环境准备: 1.1 创建数 ...

  9. SSM框架完成Ajax简单用户登录验证

    一.前端JSP <%@ page contentType="text/html;charset=UTF-8" language="java" %> ...

随机推荐

  1. github 出现 Permission denied (publickey)的解决

    从github上clone的时候出现了以下错误 应该是ssh key过期了,试着重新创建ssh key,按以下步骤 1.  注意短横线前后都没有空格 接着一切都默认,它会在把ssh key 储存在 C ...

  2. tcp连接以及网络I/O的几个问题

    这段时间在做一些web方面开发的事情,用的Nginx+fast-cgi,计划深入看一下Nginx的内部实现和架构,以方便理解和调优.后面准备写一篇有关Nginx介绍和深度解析的文章,要深入理解web服 ...

  3. IOS学习之路十(仿人人滑动菜单Slide-out Sidebar Menu)

    最近滑动菜单比较流行,像facebook和人人等都在使用滑动菜单,今天做了一个小demo大体效果如下: 这次用了一个开源的项目ECSlidingViewController这个也是一个挺著名的托管在G ...

  4. YSlow的性能测试提示

    Add an Expires or a Cache-Control Header tag: server There are two aspects to this rule: For static ...

  5. TCP通讯处理粘包详解

    TCP通讯处理粘包详解 一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据.TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的 ...

  6. IL反编译的实用工具

    初识Ildasm.exe——IL反编译的实用工具   Ildasm.exe 概要: 一.前言: 微软的IL反编译实用程序——Ildasm.exe,可以对可执行文件(ex,经典的控制台Hello Wor ...

  7. WCF客户端与服务端通信简单入门教程

    服务端 1.新建空白解决方案,然后再空白解决方案中新建:WCF服务应用程序.建完后如图: 2.删掉自动生成的IService1.cs和Service.svc并添加WCF服务文件StudentServi ...

  8. AOP in Spring

    AOP in Spring 是不是已经对包裹在每个业务周围的异常处理.事务管理.性能监控.日志记录等重复出现的代码感到厌倦,那么是时候轮到AOP出场了.不得不承认程序员的惰性有时候会是一件好事(毕竟提 ...

  9. 深入浅出 ThreadLocal(一)

    本文参考http://lavasoft.blog.51cto.com/62575/51926/,对其中的程序进行了改写 一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线 ...

  10. 如何使用Add-on SDK开发一个自己的火狐扩展

    黄聪:如何使用Add-on SDK开发一个自己的火狐扩展 火狐开放了扩展的开发权限给程序员们,相信很多人都会希望自己做一些扩展来方便一些使用. 我最近做一些项目也需要开发一个火狐扩展,方便收集自己需要 ...