在网上看到好多个版本,自己有时间索性就写个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. spring动态调用方法

    有的时候为了程序的灵活性,需要根据参数动态的调用方法.代码框架大致spring为主,下面是具体代码: 接口: 实现类(实现类中有一个从spring容器中取的对象) 这是最初我直接用反射去调用的代码: ...

  2. PageOffice修改注册码升级版本

    java: 删除pageoffice.jar所在目录(一般是WEB-INF/lib)下的license.lic文件(若服务器运行时找不到该文件,可在浏览器地址栏里面通过localhost方式访问pos ...

  3. 【GDOI 2016 Day2】第一题 SigemaGO

    题目 分析 拆点连边+spfa. 首先把图分成2lim+1层,也就是每个点拆成2lim+1个点. 如果a和b之间.b和c有一条有向边,那么连边(k,a)-->(k+1,b),(k+1,b)--& ...

  4. Wannafly挑战赛16 #E 弹球弹弹弹 splay+基环树+各种思维

    链接:https://ac.nowcoder.com/acm/problem/16033来源:牛客网 有n个位置,标号为1到n的整数,m次操作,第i次操作放置一个弹球在b[i] xor c[i-1]处 ...

  5. Activiti7入门(五)

    1 创建流程 首先选中存放图形的目录(本次我们选择 resources 下的 bpmn 目录),点击菜单: New-BpmnFile,如下图所示: 起完名字 holiday 后(默认扩展名为 bpmn ...

  6. php日志托管给apache处理

    php.ini配置: log_errors = On;不显示错误display_startup_errors = Offdisplay_errors = Off ;除了notice级别错误外,报告所有 ...

  7. android 文件读写工具类

    将可以序列化的对象通过base64编码后进行保存 但是感觉多数情况下,不需要采用这个功能,直接保存原始的json字符串,取出来之后再进行解析即可 package com.wotlab.home.mon ...

  8. Linux安装nslookup命令

    做DNS的人都知道nslookup命令是做什么用的,windows系统自带的.但是linux系统是不自带这个命令的,需要人手动安装.如果您不记得这是哪个软件包提供这个命令的话,那您还真会有些麻烦了.下 ...

  9. 整体二分初探 两类区间第K大问题 poj2104 & hdu5412

    看到好多讲解都把整体二分和$CDQ$分治放到一起讲 不过自己目前还没学会$CDQ$分治 就单独谈谈整体二分好了 先推荐一下$XHR$的 <浅谈数据结构题的几个非经典解法> 整体二分在当中有 ...

  10. Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加、删除操作都是 O(1)(平均)。

    2.3 hashes 类型及操作 Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加.删除操作都是 O(1)(平均).hash 特别适合用于存储对象.相 ...