此篇继续上篇 http://blog.csdn.net/lushuaiyin/article/details/8588420
ssh已经整合完毕,现在做一个功能模块测试是否可用。
这个功能我们就叫first。
java代码结构图:
jsp路径结构图:
下面贴出代码:
FirstIndexAction
package org.first.action;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.base.MyBaseAction;
import org.first.dao.FirstDao;
import com.opensymphony.xwork2.ActionContext;
public class FirstIndexAction extends MyBaseAction {
private static final long serialVersionUID = 1L;
public String execute() throws Exception{
return SUCCESS;
}
public String firstPage() throws Exception{
//继承了MyBaseAction,以下这些调用就简单很多
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
HttpSession session = request.getSession();
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
return SUCCESS;
}
public String queryUser() throws Exception{
String realName="";
if(this.getValueFromRequest("realName")!=null){
realName=(String)this.getValueFromRequest("realName");
}
List list=firstDao.queryUsers(realName);
this.setValueToRequest("userList", list);
return SUCCESS;
}
private FirstDao firstDao;
public FirstDao getFirstDao() {
return firstDao;
}
public void setFirstDao(FirstDao firstDao) {
this.firstDao = firstDao;
}
}
LsyUser
package org.first.bean;
public class LsyUser {
private String user_id;
private String user_name;
private String real_name;
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getReal_name() {
return real_name;
}
public void setReal_name(String real_name) {
this.real_name = real_name;
}
}
context_first.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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean id="firstDao" parent="transactionProxyTemplate">
<property name="target">
<bean class=" org.first.dao.impl.FirstDaoImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
</property>
<property name="proxyInterfaces">
<value> org.first.dao.FirstDao</value>
</property>
</bean>
</beans>
LsyUser.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.first.bean.LsyUser" table="LSY_USER_DEVELOP" >
<id name="user_id" type="java.lang.String">
<column name="user_id" length="32" />
<generator class="assigned" />
</id>
<property name="user_name" type="java.lang.String">
<column name="user_name" length="32" />
</property>
<property name="real_name" type="java.lang.String">
<column name="real_name" length="32" />
</property>
</class>
</hibernate-mapping>
数据库表我就不说了,就是很简单的3个字段,都是varcher类型。
struts_first.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="first" extends="base-struts-default" namespace="/first">
<!-- 首页 -->
<action name="firstPage" class="org.first.action.FirstIndexAction" method="firstPage">
<result name="success">/jsp/first/firstPage.jsp</result>
</action>
<action name="queryUser" class="org.first.action.FirstIndexAction" method="queryUser">
<result name="success">/jsp/first/listUser.jsp</result>
</action>
</package>
</struts>
FirstDao
package org.first.dao;
import java.util.List;
public interface FirstDao {
public List queryUsers(String realName);
}
FirstDaoImpl
package org.first.dao.impl;
import java.util.List;
import org.base.MyHibernateDao;
import org.first.dao.FirstDao;
public class FirstDaoImpl extends MyHibernateDao implements FirstDao{
public List queryUsers(String realName){
List list=null;
if(realName==null||realName.trim().equals("")){
System.out.println("参数realName为空,查询所有值。");
String hql="select u from LsyUser u ";
list=this.queryListHql(hql);
}else{
String hql="select u from LsyUser u where u.real_name like '%"+realName.trim()+"%'";
list=this.queryListHql(hql);
}
return list;
}
}
index.jsp(项目首页)
<%@ page contentType="text/html; charset=UTF-8"%>
<%
String path = request.getContextPath();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<script src="<%=path%>/script/jquery-1.7.1.min.js" type="text/javascript"></script>
</head>
<body style="overflow: scroll; overflow: auto;">
<input type="hidden" name="path" id="path" value='<%=path%>' ></input>
<center>
<h1>首页</h1>
</center>
<table width="500px" align="center">
<tr width="100%">
<td >账号:</td>
<td ><input type="text" value="" id="username"></input></td>
<td >密码:</td>
<td ><input type="text" value="" id="password"></input></td>
</tr>
<tr width="100%">
<td >查询用户:</td>
<td ><input type="radio" checked value="1" name="logintype"></input></td>
<td >查询部门:</td>
<td ><input type="radio" value="2" name="logintype"></input></td>
</tr>
<tr width="100%">
<td ></td>
<td ><input type="button" value="登录" onclick="login()"></input></td>
<td ></td>
<td ><input type="button" value="重置" onclick="resetValue()"></input></td>
</tr>
</table>
</body>
</html>
<script type="text/javascript">
//简单的登录
function login(){
var username=document.getElementById("username").value;
var password=document.getElementById("password").value;
if(username!=null&&username!=""){
var urlpath="<%=path%>"+"/jsp/first/firstPage.jsp?randomStr="+Math.random();
var urlpath2="<%=path%>"+"/jsp/second/secondPage.jsp?randomStr="+Math.random();
var type=getRadioGroupValue();
if(type=="2"){
window.location.href=urlpath2;
}else{
window.location.href=urlpath;
}
}else{
alert("账号密码不正确!");
}
}
function resetValue(){
document.getElementById("username").value="";
document.getElementById("password").value="";
}
//js获取单选按钮组的值
function getRadioGroupValue(){
var result="";
var logintype=document.getElementsByName("logintype");
if(logintype!=null&&(typeof logintype !="undifined")){
for(i=0;i<logintype.length;i++){
if(logintype[i].checked){
result=logintype[i].value;
}
}
}
return result;
}
</script>
firstPage.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%
String path = request.getContextPath();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<script src="<%=path%>/script/jquery-1.7.1.min.js" type="text/javascript"></script>
</head>
<body style="overflow: scroll; overflow: auto;">
<input type="hidden" name="path" id="path" value='<%=path%>' ></input>
<center><h1>查询用户</h1></center>
<table width="500px" border="1" align="center">
<tr>
<td>姓名:<input type="text" id="realName" value='' ></input></td>
</tr>
<tr>
<td><h1><a href="javascript:void(0)" onclick="chaxun()">查询</a></h1></td>
</tr>
</table>
</body>
</html>
<script type="text/javascript">
//查询列表
function chaxun(){
var realName=document.getElementById("realName").value;
var urlpath="<%=path%>/first/queryUser.action?randomStr="+Math.random()+"&realName="+realName;
window.location.href=urlpath;
}
</script>
listUser.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@page import="java.util.*"%>
<%@page import=" org.first.bean.LsyUser"%>
<%
String path = request.getContextPath();
%>
<%
List list=null;
if(request.getAttribute("userList")!=null){
list=(List)request.getAttribute("userList");
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<script src="<%=path%>/script/jquery-1.7.1.min.js" type="text/javascript"></script>
</head>
<body style="overflow: scroll; overflow: auto;">
<input type="hidden" name="path" id="path" value='<%=path%>' ></input>
<table width="500px" border="1" align="center">
<tr>
<td align="center">姓名:<input type="text" id="realName" value='' ></input></td>
</tr>
<tr>
<td align="center"><h1><a href="javascript:void(0)" onclick="queryuser()">查询</a></h1></td>
</tr>
</table>
<table width="500px" border="1" align="center">
<tr>
<th align="center">姓名</th><th align="center">账号</th>
</tr>
<%
if(list!=null){
for(int i=0;i<list.size();i++){
LsyUser user=(LsyUser)list.get(i);
if(user!=null){
String realname="";
String user_name="";
if(user.getReal_name()!=null){
realname=user.getReal_name();
}
if(user.getUser_name()!=null){
user_name=user.getUser_name();
}
%>
<tr>
<td><%=realname%></td><td><%=user_name%></td>
</tr>
<%
}
}
}
%>
</table>
</body>
</html>
<script type="text/javascript">
function queryuser(){
var urlpath="<%=path%>"+"/first/queryUser.action";
var realName=document.getElementById("realName").value;
$.ajax({
type:"POST",
url:urlpath,
data: "realName="+realName+"&randomStr="+Math.random(),
success: function(msg){
alert( "Succeed:");
window.location.reload();
}
});
}
</script>
此功能我已经测试过,能正常使用。代码就不讲解了,就是很简单的一个查询。目的只是为了测试ssh的整合是否成功。
Hibernate这个框架的好处就是帮我们处理持久层的东西。
如果我想把数据库从orcle移植到mysql,利用hibernate就很简单。
步骤:
1:修改对sessionFactory的配置。
因为属性的值都放到properties中了,所以我只需要修改configure.properties,如下:
# applicationContext.xml
### C3P0 Connection Pool
c3p0.maxPoolSize=3
c3p0.minPoolSize=1
c3p0.maxIdleTime=1800
c3p0.maxStatements=0
c3p0.acquireIncrement=2
c3p0.idleConnectionTestPeriod=600
#oracle
#jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@10.55.15.66:1521:cdbank
#jdbc.username=ccdb
#jdbc.password=ccdb
#hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
#mysql
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb
jdbc.username=root
jdbc.password=root
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
2:记得添加驱动包mysql-connector-java-5.1.13-bin.jar,并引入classpath。
3:创建对应的数据库和表。
这里我想说的是Hibernate中的一个属性<prop key="hibernate.hbm2ddl.auto">update</prop>
这个hibernate.hbm2ddl.auto有一下几个值:
validate 加载hibernate时,验证创建数据库表结构
create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构
在此如果我们在移植数据库时(当然只是开发过程,不关心数据的情况下),我们可以配置这个属性帮我们创建表。
等完成后一定要把此属性删掉。为什么呢?因为数据库时很重要的,所以很多大公司才高新聘请DBA,这种用程序操作
数据库本身就很危险。在你对hibernate源码都没怎么看的情况下,这种方式就不自量力了。
下一篇我们要将代码中一个比较重要的内容,那就是spring事务的使用。这里已经用到了,只是内容太多,放到下篇再细说吧。
分享到:
相关推荐
- **单元测试**:使用JUnit框架编写有效的单元测试代码,确保单个模块的功能正确性。 - **集成测试**:通过Spring Boot Test或Mockito等工具进行集成测试,验证不同组件之间的交互是否符合预期。 - **UI自动化测试**...
视频部分通常会详细展示每个开发阶段的操作步骤,包括环境搭建、代码编写、功能调试、问题解决等,对于初学者来说,这是一种直观且有效的学习方式。 6. **源码分析**: 源码是学习的关键,通过阅读和理解代码,...
### 电商微服务架构搭建全过程教程 在当前互联网技术飞速发展的背景下,电商系统作为连接商家与消费者的桥梁,其稳定性、扩展性和性能表现至关重要。为了满足高并发、大数据量处理的需求,越来越多的企业选择采用...
在本项目中,Eclipse作为开发平台,帮助开发者高效地编写和组织代码,实现项目的快速搭建。 接着,Spring框架作为核心的业务层组件,负责管理对象的生命周期和依赖关系。Spring的IoC(Inversion of Control)容器...
SSM框架是Java web开发中常用的三大框架Spring、Spring MVC和MyBatis的组合,它为开发者提供了一种高效、灵活的开发模式。本压缩包文件"SSM基本架构搭建"提供了一个基于Maven构建的基础SSM项目结构,旨在帮助开发者...
### Java编程新手必读知识点...以上内容为Java编程新手入门所需了解的一些基本知识点,涵盖了从开发环境搭建、简单程序编写到使用高级框架进行复杂应用开发等多个方面。对于初学者来说,掌握这些知识是非常重要的基础。
【标题】中的“Java 开发-----员工工资管理系统”是一个基于Java技术开发的项目,主要目的是管理企业内部的员工工资信息。这个系统可能包含了数据的录入、查询、计算、统计等功能,能够有效地帮助人力资源部门进行...
在这个配置入门教程中,我们将探讨如何配置Java Web环境,以及使用Java 1.4.2、Tomcat 5.0和SQL Server来搭建基础的三层架构。 首先,我们需要下载并安装必要的软件。Java开发工具包(JDK)1.4.2可以从Sun ...
本知识点将深入探讨如何使用Maven来搭建一个多模块的SSM(Spring、Struts、MyBatis)框架,帮助开发者实现更有序、更高效的项目结构。 1. Maven基础: Maven是Apache基金会的一个项目,它通过一个项目对象模型...
《Java智能系统——题库及试卷管理模块的设计与开发》是一个典型的Java毕业设计项目,它涵盖了软件工程中的多个重要知识点,对于学习Java编程和理解实际项目开发流程的同学来说,具有很高的参考价值。该项目的核心...
Java架构师是软件开发领域中的高级角色,负责设计、实施和优化复杂的系统。对于初学者而言,从零开始学习Java架构师的知识体系是一项挑战,但也是通往专业技能提升的必经之路。本压缩包文件“java架构师零基础学习01...
- **调试与测试**:利用IDE中的调试工具进行代码调试,编写单元测试确保功能正确性。 4. **扩展与定制** - **插件系统**:UnaBoot可能提供插件机制,允许用户自定义功能或集成第三方服务。 - **主题更换**:...
4. **编码与测试**:编写代码并进行单元测试、集成测试,确保每个模块的功能正确无误。 5. **部署与运维**:学习如何将应用部署到生产环境,并掌握基本的监控和日志管理技能。 通过本课程的学习,学员不仅能够...
SSH(Spring、Struts2、Hibernate)是一种常见的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。本教程将详细介绍如何通过SSH框架搭建一个基础的登录Demo项目。 首先,我们来理解SSH框架的核心组件: ...
9. **源码结构**:通过查看文件名,我们可以预期源码中可能包括了系统的主配置文件、实体类、DAO层、Service层、Controller层等核心模块,以及可能的测试代码。 10. **部署与运行**:SpringBoot应用可以被打包为一...
#### 三、开发环境搭建 **1. 开发环境配置** - **Java Development Kit (JDK) 1.8:** JDK是Java开发的基础,提供了必要的编译、运行工具。 - **IntelliJ IDEA:** 强大的Java集成开发环境(IDE),支持SpringBoot等...
1. **SpringBoot**: SpringBoot是Spring框架的一个模块,旨在简化Spring应用的初始搭建以及开发过程。它提供了一种快速构建可运行的应用程序的方式,内置了Tomcat服务器和默认配置,使得开发者无需过多关注配置细节...
5. 优化开发流程:通过gen代码生成器,可以快速搭建起一个基于Java三层架构的项目框架,节省了大量的初始化工作时间,让团队能更快地进入核心功能的开发。此外,代码生成器通常还支持定制化,如注解的添加、模板的...
在“pay-java-parent-develop”中,Spring Boot可能是主要的技术栈,用于快速搭建微服务架构。 4. **微服务架构**: 微服务架构是现代软件开发的趋势,每个服务专注于特定业务功能,独立部署和扩展。在这个项目中...