mysql+ssh整合例子,附源码下载 项目引用jar下载:http://download.csdn.net/detail/adam_zs/7262727 项目源码下载地址:http://download.csdn.net/detail/adam_zs/7262749 今天花时间把ssh整合了一下,重新再学习一下,希望对大家有所帮助! 我用的是mysql数
mysql+ssh整合例子,附源码下载项目引用jar下载:http://download.csdn.net/detail/adam_zs/7262727
项目源码下载地址:http://download.csdn.net/detail/adam_zs/7262749
今天花时间把ssh整合了一下,重新再学习一下,希望对大家有所帮助!
我用的是mysql数据库,建表语句比较简单就不贴出来了,建表的时候记的设置id为自动增加哦。
项目文件位置,项目引用jar包
项目配置文件
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> <!-- 使用ContextLoaderListener初始化Spring容器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 定义Struts2的FilterDispathcer的Filter --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <!-- FilterDispatcher用来初始化Struts2并且处理所有的WEB请求。 --> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8"?> <struts> <!-- 配置了系列常量 --> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <package name="wangzs" extends="struts-default"> <action name="login" class="loginAction"> <result name="error">/error.jsp</result> <result name="success">/welcome.jsp</result> </action> <!-- 让用户直接访问该应用时列出所有视图页面 --> <action name=""> <result>.</result> </action> </package> </struts>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans> <!-- 定义数据源Bean,使用C3P0数据源实现 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost/test"></property> <property name="user" value="root"></property> <property name="password" value="wzs_626750095"></property> <property name="maxPoolSize" value="40"></property> <property name="minPoolSize" value="1"></property> <property name="initialPoolSize" value="1"></property> <property name="maxIdleTime" value="20"></property> </bean> <!-- 定义Hibernate的SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <!-- mappingResouces属性用来列出全部映射文件 --> <property name="mappingResources"> <list> <value>com/wzs/bean/Person.hbm.xml</value> </list> </property> <!-- 定义Hibernate的SessionFactory的属性 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLInnoDBDialect</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> </props> </property> </bean> <bean id="loginAction" class="com.wzs.action.LoginAction" scope="prototype"> <property name="ms" ref="myService"></property> </bean> <bean id="myService" class="com.wzs.service.impl.MyServiceImpl"> <property name="personDao" ref="personDao"></property> </bean> <bean id="personDao" class="com.wzs.dao.impl.PersonDaoImpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> </beans>
java代码
Person.java
package com.wzs.bean; public class Person { private Integer id; private String name; private String password; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
Person.hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <hibernate-mapping package="lee"> <class name="com.wzs.bean.Person" table="Person"> <!-- 映射标识属性 --> <id name="id" type="int" column="id"> <generator class="identity"></generator> </id> <!-- 映射普通属性 --> <property name="name" type="string" column="name"></property> <property name="password" type="string" column="password"></property> </class> </hibernate-mapping>
LoginAction.java
package com.wzs.action; import com.opensymphony.xwork2.ActionSupport; import com.wzs.service.MyService; @SuppressWarnings("serial") public class LoginAction extends ActionSupport { // 下面是用于封装用户请求参数的两个属性 private String name; private String password; // 用于封装处理结果的属性 private String tip; // 系统所用的业务逻辑组件 private MyService ms; // 设置注入业务逻辑组件所必需的setter方法 public void setMs(MyService ms) { this.ms = ms; } /** * 用户登录 * * @return * @throws Exception */ public String login() throws Exception { // 调用业务逻辑组件的valid方法来 // 验证用户输入的用户名和密码是否正确 if (ms.valid(getName(), getPassword())) { setTip("哈哈,整合成功!"); return SUCCESS; } else { return ERROR; } } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getTip() { return tip; } public void setTip(String tip) { this.tip = tip; } public MyService getMs() { return ms; } }
MyService.java
package com.wzs.service; public interface MyService { /** * 校验用户名密码 * * @param name * 用户名 * @param password * 密码 * @return true:存在,false:不存在 */ boolean valid(String name, String password); }
MyServiceImpl.java
package com.wzs.service.impl; import com.wzs.dao.PersonDao; import com.wzs.service.MyService; public class MyServiceImpl implements MyService { private PersonDao personDao; /** * 校验用户名密码 * * @param name * 用户名 * @param password * 密码 * @return true:存在,false:不存在 */ public boolean valid(String name, String password) { return personDao.valid(name, password); } public PersonDao getPersonDao() { return personDao; } public void setPersonDao(PersonDao personDao) { this.personDao = personDao; } }
PersonDao.java
package com.wzs.dao; import java.util.List; import com.wzs.bean.Person; public interface PersonDao { /** * 校验用户名密码 * * @param name * 用户名 * @param password * 密码 * @return true:存在,false:不存在 */ public boolean valid(String name, String password); public Person get(Integer id); /** * 保存Person实例 * * @param person * 需要保存的Person实例 * @return 刚刚保存的Person实例的标识属性值 */ public Integer save(Person person); /** * 修改Person实例 * * @param person * 需要修改的Person实例 */ public void update(Person person); /** * 删除Person实例 * * @param id * 需要删除的Person实例的标识属性值 */ public void delete(Integer id); /** * 删除Person实例 * * @param person * 需要删除的Person实例 */ public void delete(Person person); /** * 根据用户名查找Person * * @param name * 查询的人名 * @return 指定用户名对应的全部Person */ public List<person> findByName(String name); /** * 查询全部Person实例 * * @return 全部Person实例 */ @SuppressWarnings("unchecked") public List findAllPerson(); /** * 查询数据表中Person实例的总数 * * @return 数据表中Person实例的总数 */ public long getPersonNumber(); } </person>
PersonDaoImpl.java
package com.wzs.dao.impl; import java.util.List; import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.HibernateTemplate; import com.wzs.bean.Person; import com.wzs.dao.PersonDao; public class PersonDaoImpl implements PersonDao { private HibernateTemplate ht = null; private SessionFactory sessionFactory; // 依赖注入SessionFactory的setter方法 public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } // 初始化HibernateTemplate的方法 private HibernateTemplate getHibernateTemplate() { if (ht == null) { ht = new HibernateTemplate(sessionFactory); } return ht; } /** * 校验用户名密码 * * @param name * 用户名 * @param password * 密码 * @return true:存在,false:不存在 */ @SuppressWarnings("unchecked") public boolean valid(String name, String password) { List<person> list = getHibernateTemplate().find("from Person p where p.name=? and p.password=?", new String[] { name, password }); if (list.size() > 0) { return true; } return false; } /** * 加载Person实例 * * @param id * 需要加载的Person实例的标识属性值 * @return 指定id对应的Person实例 */ public Person get(Integer id) { return (Person) getHibernateTemplate().get(Person.class, id); } /** * 保存Person实例 * * @param person * 需要保存的Person实例 * @return 刚刚保存的Person实例的标识属性值 */ public Integer save(Person person) { return (Integer) getHibernateTemplate().save(person); } /** * 修改Person实例 * * @param person * 需要修改的Person实例 */ public void update(Person person) { getHibernateTemplate().update(person); } /** * 删除Person实例 * * @param id * 需要删除的Person实例的标识属性值 */ public void delete(Integer id) { getHibernateTemplate().delete(get(id)); } /** * 删除Person实例 * * @param person * 需要删除的Person实例 */ public void delete(Person person) { getHibernateTemplate().delete(person); } /** * 根据用户名查找Person * * @param name * 查询的人名 * @return 指定用户名对应的全部Person */ @SuppressWarnings("unchecked") public List<person> findByName(String name) { return (List<person>) getHibernateTemplate().find("from Person p where p.name like ?", name); } /** * 查询全部Person实例 * * @return 全部Person实例 */ @SuppressWarnings("unchecked") public List findAllPerson() { return (List<person>) getHibernateTemplate().find("from Person"); } /** * 查询数据表中Person实例的总数 * * @return 数据表中Person实例的总数 */ public long getPersonNumber() { return (Long) getHibernateTemplate().find("select count(*) from Person as p").get(0); } } </person></person></person></person>
jsp界面
login.jsp
<title>登录页面</title>
welcome.jsp
<title>成功页面</title> 您已经登录! <property value="tip"></property>
error.jsp
<title>错误页面</title> 您不能登录!

mysqloffersvariousStorageengines,每个suitedfordferentusecases:1)InnodBisidealForapplicationsNeedingingAcidComplianCeanDhighConcurncurnency,supportingtransactionsancions and foreignkeys.2)myisamisbestforread-Heavy-Heavywyworks,lackingtransactionsactionsacupport.3)记忆

MySQL中常见的安全漏洞包括SQL注入、弱密码、权限配置不当和未更新的软件。1.SQL注入可以通过使用预处理语句防止。2.弱密码可以通过强制使用强密码策略避免。3.权限配置不当可以通过定期审查和调整用户权限解决。4.未更新的软件可以通过定期检查和更新MySQL版本来修补。

在MySQL中识别慢查询可以通过启用慢查询日志并设置阈值来实现。1.启用慢查询日志并设置阈值。2.查看和分析慢查询日志文件,使用工具如mysqldumpslow或pt-query-digest进行深入分析。3.优化慢查询可以通过索引优化、查询重写和避免使用SELECT*来实现。

要监控MySQL服务器的健康和性能,应关注系统健康、性能指标和查询执行。1)监控系统健康:使用top、htop或SHOWGLOBALSTATUS命令查看CPU、内存、磁盘I/O和网络活动。2)追踪性能指标:监控查询每秒数、平均查询时间和缓存命中率等关键指标。3)确保查询执行优化:启用慢查询日志,记录并优化执行时间超过设定阈值的查询。

MySQL和MariaDB的主要区别在于性能、功能和许可证:1.MySQL由Oracle开发,MariaDB是其分支。2.MariaDB在高负载环境中性能可能更好。3.MariaDB提供了更多的存储引擎和功能。4.MySQL采用双重许可证,MariaDB完全开源。选择时应考虑现有基础设施、性能需求、功能需求和许可证成本。

MySQL使用的是GPL许可证。1)GPL许可证允许自由使用、修改和分发MySQL,但修改后的分发需遵循GPL。2)商业许可证可避免公开修改,适合需要保密的商业应用。

选择InnoDB而不是MyISAM的情况包括:1)需要事务支持,2)高并发环境,3)需要高数据一致性;反之,选择MyISAM的情况包括:1)主要是读操作,2)不需要事务支持。InnoDB适合需要高数据一致性和事务处理的应用,如电商平台,而MyISAM适合读密集型且无需事务的应用,如博客系统。

在MySQL中,外键的作用是建立表与表之间的关系,确保数据的一致性和完整性。外键通过引用完整性检查和级联操作维护数据的有效性,使用时需注意性能优化和避免常见错误。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

WebStorm Mac版
好用的JavaScript开发工具

Dreamweaver CS6
视觉化网页开发工具