在网上看到好多个版本,自己有时间索性就写个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. shell脚本监控Tomcat并重启发送短信

    #!/bin/sh TomcatID=$(ps -ef |grep tomcat |grep -w 'tomcat'|grep -v 'grep'|awk '{print $2}') StartTom ...

  2. Flask实现分页功能

    可以参考: https://blog.csdn.net/weixin_36380516/article/details/80295101 也可以参考我的代码: https://github.com/z ...

  3. Tymeleaf模板引擎背景图片路径书写方式

    <body style="background: url(../static/assets/img/bg-so-white.png);" th:style="'ba ...

  4. 查看jar包内容

    查看jar包内容 查看jar包内容的基本命令: jar tf jar-file 参数解释: The t option indicates that you want to view the table ...

  5. classloader加载class的流程及自定义ClassLoader

    java应用环境中不同的class分别由不同的ClassLoader负责加载.一个jvm中默认的classloader有Bootstrap ClassLoader.Extension ClassLoa ...

  6. Arduino库

    单总线库: 下载地址  :  链接:https://pan.baidu.com/s/1YSuqrXWuBAxMEUWHy8rckw    提取码:svix 把整个文件夹复制到 Arduino安装目录的 ...

  7. 【leetcode】581. Shortest Unsorted Continuous Subarray

    题目如下: 解题思路:本题我采用的是最简单最直接最粗暴的方法,把排序后的nums数组和原始数组比较即可得到答案. 代码如下: /** * @param {number[]} nums * @retur ...

  8. 微信小程序 上拉刷新/下拉加载

    小程序项目中上拉刷新下拉加载是比较常见的需求,官方文档也提供了相当友好的API,但是因为API隐藏的比较深,文档描述也比较模糊所以也折腾了一番(官方文档),在此记录一下使用方式 onPullDownR ...

  9. Internet History, Technology, and Security(week3)——History: The Web Makes it Easy to Use

    前言: 上周学习了第一个网络NSFnet,美国国家科学基金会(National Science Foundation,简称NSF)在全美国建立了6个超级计算机中心所互联的一个网络,这周继续学习网络的发 ...

  10. Miniprofiler在目中使用报 mini-profiler-resources/includes.js 404错误

    原因,没有配置webconfig <system.webServer> <modules> <remove name="FormsAuthentication& ...