SSH 环境搭建及注解实现登录功能 DEMO
来源:互联网 发布:淘宝客的链接怎么看 编辑:程序博客网 时间:2024/05/22 19:14
SSH 环境搭建及注解实现登录功能 DEMO
前言
最近通过网上的视频学习了一下 SSH 三大框架的整合应用,熟悉一下流程,视频其实三四天就可以看完了。比较基础的内容,更多的是需要自己去尝试,离开视频后一步步去操作,去实践。
环境
Eclipse 4.7.1
Windows 7
Spring 4.3.9 版本
Struts 2.5 版本
Hibernate 5.2.12 版本
C3P0 0.9.5.2 版本
MySQL 驱动 5.1.41
struts2-spring-plugin-2.5.13.jar
说明版本只是因为,不同版本配置可能有所不同,自己配置的时候,因为 jar 包都是从官网下载,所以版本都比较新。配置起来有所不同,同时有些使用的方法也可能被废弃了。
配置
新建 web 项目
导入相关的 jar 包
配置文件的配置
编写后台代码
前台页面
测试
新建 web 项目
打开 Eclipse,File —— New —— Dynamic Web project,输入项目名称,然后 Finally
导入相关的 jar 包
导入最基础的 jar 包即可,缺包的再导入相关的 jar 包
Struts2 的官网有提供必须的最小 jar 包
Hibernate 则导入 required 文件夹下的 jar 包和 jpa 文件夹下的 jar 包
Spring 的 jar 包(需要导入 spring-orm-4.3.9.RELEASE.jar 与 Hibernate 整合)
mysql 驱动的 jar 包
导入 Struts2 与 Spring 整合的插件包 struts2-spring-plugin-2.5.13.jar
导入 c3p0-0.9.5.2.jar
我的导入如下:
配置文件的配置
web.xml 配置
在 /ssh_anno(项目名)/WebContent/WEB-INF 下创建一个 web.xml 文件。配置如下:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>ssh_anno</display-name> <welcome-file-list> <welcome-file>/WEB-INF/login.jsp</welcome-file> </welcome-file-list> <!-- 配置监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 配置 struts2 核心过滤器 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></web-app>
applicationContext.xml 配置
在 src 下创建 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" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> <!-- 配置数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/learnSSH?characterEncoding=UTF-8" /> <property name="user" value="root" /> <property name="password" value="123456" /> </bean> <!-- 开启注解扫描 --> <context:component-scan base-package="test" /> <!-- SessionFactory 创建 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocations" value="classpath:hibernate.cfg.xml"></property> <!-- 在核心配置文件中没有映射文件 --> <property name="packagesToScan" value="test.entity"></property> </bean> <!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 开启注解,使用哪个事务管理器 --> <tx:annotation-driven transaction-manager="transactionManager" /> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"></property> </bean></beans>
修改 applicationContext.xml 配置中的数据库名称,账号以及密码,数据库必须存在。Hibernate 可以配置自动创建对应的表,但是无法自动创建数据库。
hibernate.cfg.xml 文件配置
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- 输出底层 SQL 语句 --> <property name="hibernate.show_sql">true</property> <!-- 输出底层 SQL 语句格式 --> <property name="hibernate.format_sql">true</property> <!-- update:数据库中如果已经有表,则更新;如果没有,Hibernate 自动创建对应的表 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 配置数据库方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> </session-factory></hibernate-configuration>
struts.xml 配置
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"><struts> <package name="front" namespace="/" extends="struts-default"> <!-- 配置全局动态方法调用 --> <global-allowed-methods>regex:.*</global-allowed-methods> <action name="user_*" class="userAction" method="{1}"> <result name="loginSuccess">/WEB-INF/hello.jsp</result> <result name="login">/WEB-INF/login.jsp</result> </action> </package></struts>
编写后台代码
编写实体类 User.java
在 src 下创建包 test.entity,然后创建 User.java 文件,代码如下:
package test.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="t_user")public class User { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int uid; @Column private String username; @Column private String password; @Column private String address; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } 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 getAddress() { return address; } public void setAddress(String address) { this.address = address; }}
UserAction.java 代码编写
在 src 下创建包 test.action,然后创建 UserAction.java 文件,代码如下:
package test.action;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.opensymphony.xwork2.ActionSupport;import test.entity.User;import test.service.UserService;@Controller("userAction")@Scope(value="prototype")public class UserAction extends ActionSupport { @Resource(name="userService") private UserService userService; private String username; private String password; 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() { User user = new User(); user.setUsername(username); user.setPassword(password); User userExist = userService.login(user); if (null != userExist) { HttpServletRequest request = ServletActionContext.getRequest(); request.getSession().setAttribute("user", userExist); return "loginSuccess"; } else { return "login"; } }}
UserService.java 代码编写
在 src 下创建包 test.service,然后创建 UserService.java 文件,代码如下:
package test.service;import javax.annotation.Resource;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import test.dao.UserDao;import test.entity.User;@Service(value="userService")@Transactionalpublic class UserService { @Resource(name="userDao") private UserDao userDao; // 登录验证 public User login(User user) { return userDao.login(user); }}
UserDao.java 和 UserDaoImpl.java 代码编写
在 src 下创建包 test.dao,然后创建 UserDao.java 和 UserDaoImpl.java 文件,代码如下:
UserDao.java
package test.dao;import test.entity.User;public interface UserDao { // 登录验证 User login(User user);}
UserDaoImpl.java
package test.dao;import java.util.List;import javax.annotation.Resource;import org.springframework.orm.hibernate5.HibernateTemplate;import org.springframework.stereotype.Component;import test.entity.User;@Component("userDao")public class UserDaoImpl implements UserDao { @Resource(name="hibernateTemplate") private HibernateTemplate hibernateTemplate; // 登录 @SuppressWarnings("unchecked") @Override public User login(User user) { List<User> list = (List<User>) hibernateTemplate. find("from User where username=? and password=?", user.getUsername(),user.getPassword()); if (null != list && list.size() > 0) { return list.get(0); } return null; }}
前台页面
在 /ssh_anno/WebContent/WEB-INF/ 下创建 login.jsp 和 hello.jsp 页面
login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!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=UTF-8"> <title>登录页面</title></head><body> <form action="${pageContext.request.contextPath}/user_login.action" method="post"> <br /> <br /> 用户名:<input type="text" id="username" name="username" /> <br /> 密码:<input type="password" id="password" name="password" /> <br /> <button type="submit">提交</button> </form></body></html>
hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%><!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=UTF-8"> <title>Hello,SSH</title></head><body> <h1>Hello,${user.username}</h1></body></html>
测试
在 MySQL 中创建数据库,这里数据库名为 learnSSH。与 applicationContext.xml 中的配置保持一致即可。
运行项目,则会自动在 learnSSH 数据库中创建表 t_user
手动往里面输入一条记录,例如用户名为 test,密码为 123
在 http://localhost:8080/ssh_anno/ 页面,输入刚才的账号密码,点击登录,成功跳转到 hello.jsp 页面的内容。
OK,测试成功!
后记
到此,基本整合就结束了,剩下的就是往上面新增一些功能了。加入注解之后,整个开发变得更为整洁了,也方便了许多。
关于 SSH 的了解,估计也就到此告一段落了,之后则去折腾其他的,如今更多的是使用 SSM 或者其他的。了解多一套框架,以此来扩展自己的知识面。在遇到新老项目对接的时候,不至于什么都不懂,自己实践后,留个小 DEMO 并做下笔记。需要用到时,翻看一下自己的笔记和 DEMO,也就很快就上手了。
在实践中成长!
HochenChong
时间:2017-12-21
- SSH 环境搭建及注解实现登录功能 DEMO
- SSH框架环境配置以及登录功能的实现(通过注解)
- SSH-使用注解整合实现简单的登录功能
- ssh(Struts+Spring+Hibernate)环境搭建,实现登录
- PHP实现登录功能DEMO
- Struts2开发环境搭建,及一个简单登录功能实例
- 全注解实现ssh的Demo实例
- spring-mvc环境搭建及helloworld的demo实现
- storm环境搭建及demo
- kafka环境搭建及demo
- 学习SSH时的练习demo,实现分页和登录等简单功能
- SSH商城Demo --- 五、搭建SSH开发环境,配置基本信息
- AndroidMVP模式小Demo(登录功能实现)
- 注解方式实现ssh框架搭建
- 利用SSH框架实现用户登录功能
- 简单的SSH登录功能实现
- appium java环境搭建及demo
- python-环境搭建及自动化测试Demo
- launch文件的理解
- 51nod 1001 数组中和等于K的数对
- bzoj3876 [Ahoi2014&Jsoi2014]支线剧情(有源汇有上下界最小费用流)
- 小白的机器学习:Numpy矩阵扫盲
- FZU
- SSH 环境搭建及注解实现登录功能 DEMO
- 同一地方组建多个 ZigBee 网络
- 使用jsp javabean 和jdbc实现一个个人信息提交页面
- exec 与 exec sp_executesql 的用法及比较
- 序列化和反序列化
- php微信自定义分享
- let 22 generate parentheses
- IT行业风投
- HTTP (2) 状态码