在网上看到好多个版本,自己有时间索性就写个Demo记录下整个框架的逻辑流程;

1、首先拷贝整个框架所需要的jar包到WEB-INF/lib包下(这个网上都可以搜到的)

2、配置文件的配置,

  2.1、在web.xml配置文件中,是整个项目的入口配置文件,需要配置struts核心配置、Spring核心配置、监听spring配置

 <!-- Spring的核心配置,{必不可少的} -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 把spring的配置文件放到了/WEB-INF/下的springframework包里,方便统一管理,命名规则是以applicationContent-开头的xml文件,初始化时会自动搜索所有符合规则的配置文件 -->
<param-value>/WEB-INF/spring/applicationContext-web.xml</param-value>
</context-param>
<listener> <!--监听器 用于初始化spring框架 -->
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- struts2核心配置,{必不可少,缺少时页面跳转总是出现404的错误} -->
<filter>
<filter-name>struts2</filter-name><!-- 这个就是struts2的核心过滤器 -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
22 </filter-mapping>

  2.2、将struts2的主配置文件复制到此项目中,可以复制到(classpath:)src的目录下即可

<struts>

<package name="default" namespace="/" extends="struts-default">
<!-- 更新版本信息的页面跳转 -->
<action name="autoAction" class="com.test.action.AutoUpgradeAction"
method="SelectByid">
<result name="one">One.jsp</result> <!-- 显示查询成功 -->
<result name="sad">Select.jsp</result><!-- 查询失败失败 -->
</action>
<action name="autoActionAll" class="com.test.action.AutoUpgradeAction"
method="QueryAll">
<result name="all">All.jsp</result> <!-- 显示查询成功 -->
<result name="null">Select.jsp</result> <!-- 显示查询成功 -->
</action>
</package>

</struts>

  2.3、Spring框架的搭建,创建applicationContext-web.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:context="http://www.springframework.org/schema/context"
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.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

<!--dataSource的相关配置 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/ibatis/jdbc.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 配置iBatis的sqlMapClient,这里当然是交给了spring去处理,其中,将SqlMapConfig文件放到了WEB-INF的iBatis目录下,也是便于管理 -->
<!-- Spring整合ibatis配置文件 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation"><value>/WEB-INF/ibatis/SqlMapConfig.xml</value></property>
<property name="dataSource"><ref bean="dataSource" /></property><!-- 这里使用的数据源就是上面配置的数据源 -->
</bean>
<!-- 更新信息 -->
<bean id="autodaoImpl" class="com.test.daoImpl.AutoUpgradeDaoImpl">
<property name="sqlMapClient" ref="sqlMapClient"></property>
</bean>
<bean id="autoServiceImpl" name="autoServiceImpl" class="com.test.serviceImpl.AutoUpgradeServiceImpl">
<property name="autodao" ref="autodaoImpl">
</property>
</bean>
<!-- 查询更新信息model的action -->
<bean id="autoAction" name="autoAction" class="com.test.action.AutoUpgradeAction"
scope="prototype">
<property name="autoService" ref="autoServiceImpl"></property>
</bean>
<context:annotation-config />
<context:component-scan base-package="com.test" />

  2.4、连接数据库的相关配置文件jdbc.properties和SqlMapConfig.xml配置文件(分别集中到一个文件夹中,)

jdbc.properties

jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=fdx
jdbc.username=sa
jdbc.password=abc123456

SqlMapConfig.xml【sql的映射文件的配置】

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>

<!-- 获取版本信息model -->
<sqlMap resource="com/test/ibatis/sqlMap/AutoUpgrade.xml" />

</sqlMapConfig>

User.xml配置文件中放的具体的sql语句的操作:

<sqlMap>

<typeAlias alias="AutoUpgrade" type="com.test.pojo.AutoUpgrade" />

<select id="selsectAuto" parameterClass="java.lang.Integer"
resultClass="AutoUpgrade">
select * from t_AutoUpgrade
where id = #id#;
</select>

<select id="selsectAll" resultClass="AutoUpgrade">
select * from t_AutoUpgrade
</select>

</sqlMap>

以上都是配置文件的配置,接下来是部分java代码部分

dao接口

package com.test.dao;

import java.util.List;

import com.test.pojo.AutoUpgrade;

public interface AutoUpgradeDao {
//获取版本信息
public AutoUpgrade queryAotuUpgradeById(int id);
//查询所有信息
public List<AutoUpgrade> queryAll();
}

  

daoImpl实现类

package com.test.dao;

import java.util.List;

import com.test.pojo.AutoUpgrade;

public interface AutoUpgradeDao {
//获取版本信息
public AutoUpgrade queryAotuUpgradeById(int id);
//查询所有信息
public List<AutoUpgrade> queryAll();
}

  

service接口

package com.test.service;

import java.util.List;

import com.test.pojo.AutoUpgrade;

public interface AutoUpgradeService {

	//根据id查看更新信息
public AutoUpgrade queryAutoById(int id);
//查询所有版本信息列表
public List<AutoUpgrade> queryAll();
}

  

serviceImpl实现类【业务实现类】

package com.test.serviceImpl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.test.dao.AutoUpgradeDao;
import com.test.pojo.AutoUpgrade;
import com.test.service.AutoUpgradeService; public class AutoUpgradeServiceImpl implements AutoUpgradeService{
@Autowired
private AutoUpgradeDao autodao; public AutoUpgradeDao getAutodao() {
return autodao;
} public void setAutodao(AutoUpgradeDao autodao) {
this.autodao = autodao;
}
@Override
public AutoUpgrade queryAutoById(int id) {
// TODO Auto-generated method stub
System.out.println("进来了serviceimpl实现类中===========");
AutoUpgrade auto = autodao.queryAotuUpgradeById(id);
System.out.println("serviceImpl实现类中完成了查询操2222222222222:"+auto.getUrl());
return auto;
} @Override
public List<AutoUpgrade> queryAll() {
// TODO Auto-generated method stub
System.out.println("serviceimpl进来啦--------------");
List<AutoUpgrade> list = autodao.queryAll();
return list;
} }

  

RegisterAction类

package com.test.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.springframework.beans.factory.annotation.Autowired; import com.opensymphony.xwork2.ActionSupport;
import com.test.pojo.AutoUpgrade;
import com.test.service.AutoUpgradeService; public class AutoUpgradeAction extends ActionSupport implements ServletRequestAware{
/**
* 序列化
*/
private static final long serialVersionUID = 1L; @Autowired
private AutoUpgradeService autoService; public AutoUpgradeService getAutoService() {
return autoService;
} public void setAutoService(AutoUpgradeService autoService) {
this.autoService = autoService;
} private HttpServletRequest request; public String SelectByid() {
System.out.println("开始进行action中进行前后台的交互----------------");
String id = request.getParameter("id");
System.out.println("id值============="+id);
AutoUpgrade auto = new AutoUpgrade();
auto.setId(Integer.valueOf(id));
System.out.println("用户名"+auto.getId()+"将要进入查询操作");
AutoUpgrade au= autoService.queryAutoById(auto.getId());
System.out.println("==============="+au.getAppCode()+"===appcode值");
if(au.getAppCode() !=null || au.getAppCode()!=""){
request.setAttribute("auto", au);
return "one";
}
return "sad";
}
//查询所有的版本信息,并用列表显示出来
public String QueryAll(){
System.out.println("见啦了action中,进行查询全部版本信息==========================");
List<AutoUpgrade> list = autoService.queryAll();
if(list.size()>0){
request.setAttribute("list", list);
return "all";
}else{
return "null";
}
} @Override
public void setServletRequest(HttpServletRequest arg0) {
// TODO Auto-generated method stub
request = arg0;
} }

  

前台的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>Insert title here</title>
</head>
<body>
<form action="/SSIDemo/autoActionAll" method="post">
<input type="submit" value="查询所有">
</form>
</body>
</html>

查询完成之后,显示页面内容的jsp

<%@page import="java.util.Iterator"%>
<%@page import="java.util.List"%>
<%@page import="com.test.pojo.AutoUpgrade"%>
<%@ page contentType="text/html; charset=utf-8" language="java"%>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<title>查询成功</title> </head>
<body>
<h3 >welcome here!</h3> <table border="1" cellspacing="0">
<thead style="color:red">
<tr>
<td>id</td>
<td>appCode</td>
<td>UpgradeTis</td>
<td>Version</td>
<td>ForceUpgrade</td>
<td>ReleaseTime</td>
<td>url</td>
</tr>
</thead> <tbody>
<tr>
<% List<AutoUpgrade> list = (List<AutoUpgrade>)request.getAttribute("list");
Iterator it = list.iterator();
while(it.hasNext()){
AutoUpgrade auto = (AutoUpgrade)it.next();%> <td><%=auto.getId() %></td>
<td><%=auto.getAppCode()%></td>
<td><%=auto.getUpgradeTis() %></td>
<td><%=auto.getVersion() %></td>
<td><%=auto.getForceUpgrade() %></td>
<td><%=auto.getReleaseTime() %></td>
<td><%=auto.getUrl()%></td>
</tr>
<%} %>
</tbody> </table>
</body>
</html>

显示结果:

  然后按照MVC的模式设计Demo,整个项目目录如下:

  

使用SSI框架写的简单Demo(查询模块)的更多相关文章

  1. JAVA之Mybatis基础入门--框架搭建与简单查询

    JAVA中,操作数据库有JDBC.hibernate.Mybatis等技术,今天整理了下,来讲一讲下Mybatis.也为自己整理下文档: hibernate是一个完全的ORM框架,是完全面向对象的.但 ...

  2. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  3. 教你写个简单到的 Redis Client 框架 - .NET Core

    目录 1,关于 Redis RESP 定义数据类型 2,定义异步消息状态机 3,定义命令发送模板 4,定义 Redis Client 5,实现简单的 RESP 解析 6,实现命令发送客户端 7,如何使 ...

  4. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  5. android JNI 简单demo(2)它JNI demo 写

    android JNI 简单demo(2)它JNI demo 写 一.搭建Cygwin 环境:http://blog.csdn.net/androidolblog/article/details/25 ...

  6. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  7. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  8. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  9. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

随机推荐

  1. RetentionPolicy.SOURCE注解应用

    Lombok原理分析: https://www.jianshu.com/p/fc06578e805a

  2. 如何提高SMTP邮件的安全性?从而不被黑客窃听

    简单邮件传输协议(SMTP)用于在邮件服务器之间进行邮件传输,并且传统上是不安全的,因此容易被黑客窃听.命名实体的基于DNS的认证(国家统计局)用于SMTP提供了邮件传输更安全的方法,并逐渐变得越来越 ...

  3. 【NOIP2015模拟11.3】备用钥匙

    题目 你知道Just Odd Inventions社吗?这个公司的业务是"只不过是奇妙的发明(Just Odd Inventions)".这里简称为JOI社. JOI社有N名员工, ...

  4. A1009

    两个多项式的乘积 两个数组,一个放多项式1,一个放结果 注意:arr2[j+exp]+=arr1[j]*coe; 因为有指数相加相同的情况下需要合并系数 #include<cstdio> ...

  5. darknet-yolov3模型预测框size不正确的原因

    问题描述:预测框的中心位置正常,但是预测的框的width和height不正常. 解决方法:使得训练的配置cfg和测试中cfg的输入width, height, anchorbox保持一致! 问题是我在 ...

  6. HDU 4277 USACO ORZ(DFS暴搜+set去重)

    原题代号:HDU 4277 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4277 原题描述: USACO ORZ Time Limit: 5000/1 ...

  7. 长链剖分优化树形DP总结

    长链剖分 规定若\(x\)为叶结点,则\(len[x]=1\). 否则定义\(preferredchild[x]\)(以下简称\(pc[x]\),称\(pc[x]\)为\(x\)的长儿子)为\(x\) ...

  8. UE4 质心相关

    Add force 始终给质心施加力,即使手动偏移了质心(Center of mass)也不例外. Add force at location local 相对于物体的原始质心位置增加一个偏移值后的位 ...

  9. [CSP-S模拟测试]:幻魔皇(数学)

    题目描述 幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对. 所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子.神奇的节点对则是指白 ...

  10. Retrotranslator使用简介(JDK1.5->1.4)

      Retrotranslator是一个可以把JDK1.5(6)下编译的类(或包)转译成JDK1.4下可以识别的类(包)的工具. 为现在还用JDK1.4呢?我想无非是现在的大部分Java Web应用是 ...