在网上看到好多个版本,自己有时间索性就写个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. Flutter SDK安装(windows)

    Flutter集成了Dart,因此不需要单独安装dart-sdk.Flutter的SDK可以从官网下载:https://flutter.io/sdk-archive/#windows 在Flutter ...

  2. SQL查询语句备忘录

    有关于SQL查询的相关语句和语法的记录!备忘与复习用 1.SQL多表联合查询 select a.字段1,a.字段2,b,字段2 from 表1 a,表2 b where a.字段1 =b.字段1 2. ...

  3. java调用存储过程的方式

    1.问号是入参和出参,出参要指定类型 CallableStatement pstmt = conn.prepareCall("{call dbo.UP_CodeUp_***(?,?,?,?, ...

  4. 对react的redux的研究(一)

      action types   export const ADD_TODO = 'ADD_TODO' export const TOGGLE_TODO = 'TOGGLE_TODO' export ...

  5. Charles抓取手机https请求

    1.下载Charles工具,3.92破解版:http://pan.baidu.com/s/1cko2L4 密码:chmy 2.安装SSL证书,默认安装就可以 3.证书安装成功后,点击详细信息--> ...

  6. ProtocolHandler继承体系

  7. React-Native 之 GD (四)使用通知方式隐藏或显示TabBar

    1.GDHalfHourHot.js  发送通知 /** * 近半小时热门 */ import React, { Component } from 'react'; import { StyleShe ...

  8. linux 杀掉僵尸进程 (zombie process, defunct)

    本文说明为什么会出现僵尸进程 (zombie process, defunct),以及如何杀掉僵尸进程 1. 为什么有僵尸进程 僵尸进程出现在父进程没有回收子进程的 PCB 的时候,这个时候子进程已经 ...

  9. 【洛谷P1219 八皇后】

    参考思路见白书(一本通) 题目链接 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上 ...

  10. vscode-常用插件介绍(10大插件)

    https://www.cnblogs.com/zhaoshujie/p/9834654.html 本文介绍了目前前端开发最受欢迎的开发工具 VSCode 必装的 10 个开发插件,用于大大提高软件开 ...