struts中调用servlet的两种方法——IcC方式和非IoC方式的代码demo
package com.java1234.action;//所在的包 import java.sql.Connection;//数据库连接的类
import java.util.ArrayList;//ArrayList和List是在private List<DataDic> dataDicList=new ArrayList<DataDic>();中用到
import java.util.List;//ArrayList和List是在private List<DataDic> dataDicList=new ArrayList<DataDic>();中用到 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import net.sf.json.JSONObject; import org.apache.struts2.ServletActionContext;//访问Servlet API的时候使用的非IOC方式 ,方法一:org.apache.Structs2.ServletActionContext获取session,request,response
import org.apache.struts2.interceptor.ServletRequestAware; ////访问Servlet API的时候 使用的IOC方式(Inversion of Control,自身不创建对象,仅仅描述创建它们的方式.)这里是 让Action实现ServletRequestAware接口而已,没有实现ServletResponseAware接口还有 SessionWare接口 import com.java1234.dao.DataDicDao;
import com.java1234.model.DataDic;
import com.java1234.model.PageBean;
import com.java1234.util.DbUtil;
import com.java1234.util.NavUtil;
import com.java1234.util.PageUtil;
import com.java1234.util.PropertiesUtil;
import com.java1234.util.ResponseUtil;
import com.java1234.util.StringUtil;
import com.opensymphony.xwork2.ActionSupport;//action需要继承这个类 /*这里是让类实现ServletRequestAware接口就是非IOC方式,没有实现ServletResponseAware接 口还有SessionWare接口*/
// 这里是让类继承了ActionSupport这个类,实现IOC方式
public class DataDicAction extends ActionSupport implements ServletRequestAware{ /**
*
*/
private static final long serialVersionUID = 1L; private HttpServletRequest request;//定义request
private DbUtil dbUtil=new DbUtil();
private DataDicDao dataDicDao=new DataDicDao();
private List<DataDic> dataDicList=new ArrayList<DataDic>();//定义一个DataDic 类型的ArrayLst,但是ArrayList定义的时候需要用List a=new ArrayList();定义 private String mainPage;
private String navCode; private String s_ddTypeName; private String page;
private int total;
private String pageCode; private String ddId; public String getDdId() {
return ddId;
} public void setDdId(String ddId) {
this.ddId = ddId;
} public String getPage() {
return page;
} public void setPage(String page) {
this.page = page;
} public int getTotal() {
return total;
} public void setTotal(int total) {
this.total = total;
} public String getPageCode() {
return pageCode;
} public void setPageCode(String pageCode) {
this.pageCode = pageCode;
} public List<DataDic> getDataDicList() {
return dataDicList;
} public void setDataDicList(List<DataDic> dataDicList) {
this.dataDicList = dataDicList;
} public String getMainPage() {
return mainPage;
} public void setMainPage(String mainPage) {
this.mainPage = mainPage;
} public String getNavCode() {
return navCode;
} public void setNavCode(String navCode) {
this.navCode = navCode;
} public String getS_ddTypeName() {
return s_ddTypeName;
} public void setS_ddTypeName(String s_ddTypeName) {
this.s_ddTypeName = s_ddTypeName;
} public String list(){//定义一个方法
if(StringUtil.isEmpty(page)){
page="1";
}
Connection con=null;
try{
HttpSession session=request.getSession();//非IoC方式的第一种 方法:使用org.apache.struts2.SerVletActionContext获取session对象
DataDic s_dataDic=new DataDic();
if(s_ddTypeName!=null){
s_dataDic.setDdTypeName(s_ddTypeName);//非IoC方式的第 一种方法:使用org.apache.struts2.SerVletActionContext获取session对象
session.setAttribute("s_ddTypeName", s_ddTypeName);// 非IoC方式的第一种方法:使用org.apache.struts2.SerVletActionContext获取session对象
}else{
Object o=session.getAttribute("s_ddTypeName");//非IoC 方式的第一种方法:使用org.apache.struts2.SerVletActionContext获取session对象
if(o!=null){
s_ddTypeName=(String)session.getAttribute ("s_ddTypeName");//非Ioc方式的第一种方法:使用org.apache.struts2.SerVletActionContext 获取session对象
s_dataDic.setDdTypeName(s_ddTypeName);
}
}
PageBean pageBean=new PageBean(Integer.parseInt (page),Integer.parseInt(PropertiesUtil.getValue("pageSize")));
con=dbUtil.getCon();
dataDicList=dataDicDao.dataDicList(con,s_dataDic,pageBean);
total=dataDicDao.dataDicCount(con, s_dataDic);
pageCode=PageUtil.genPagation(request.getContextPath ()+"/dataDic!list", total, Integer.parseInt(page), Integer.parseInt (PropertiesUtil.getValue("pageSize")));
navCode=NavUtil.getNavgation("系统管理", "数据字典维护");
mainPage="dataDic/dataDicList.jsp";
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return SUCCESS;
} @Override
public void setServletRequest(HttpServletRequest request) {//IoC方式访问 Servlet API,要用到request对象。为request方法添加setter方法
// TODO Auto-generated method stub
this.request=request;
} public String delete(){
Connection con=null;
try{
con=dbUtil.getCon();
JSONObject resultJson=new JSONObject();
dataDicDao.dataDicDelete(con, ddId);
resultJson.put("success", true);
ResponseUtil.write(resultJson, ServletActionContext.getResponse());//非Ioc方式的第一种方法:使用 org.apache.struts2.SerVletActionContext
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
}
struts中调用servlet的两种方法——IcC方式和非IoC方式的代码demo的更多相关文章
- [转]Delphi调用cmd的两种方法
delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hid ...
- C++调用DLL有两种方法——静态调用和动态调用
C++调用DLL有两种方法——静态调用和动态调用 标签: dllc++winapinullc 2011-09-09 09:49 11609人阅读 评论(0) 收藏 举报 分类: cpp(30) [ ...
- [转]Qt中定时器使用的两种方法
Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类. 其精确度一般依赖于操作系统和硬件,但一般支持20ms.下面将分别介绍两种方法来使用定时器. 方法 ...
- python中执行shell的两种方法总结
这篇文章主要介绍了python中执行shell的两种方法,有两种方法可以在Python中执行SHELL程序,方法一是使用Python的commands包,方法二则是使用subprocess包,这两个包 ...
- vue中使用echarts的两种方法
在vue中使用echarts有两种方法一.第一种方法1.通过npm获取echarts npm install echarts --save 2.在vue项目中引入echarts 在 main.js 中 ...
- php获取数组中重复数据的两种方法
分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...
- Ajax中解析Json的两种方法详解
eval(); //此方法不推荐 JSON.parse(); //推荐方法 一.两种方法的区别 我们先初始化一个json格式的对象: var jsonDate = '{ "name&qu ...
- Ajax中解析Json的两种方法
eval(); //此方法不推荐 JSON.parse(); //推荐方法 一.两种方法的区别 我们先初始化一个json格式的对象: var jsonDate = '{ "name" ...
- Hive开发中使用变量的两种方法
在使用hive开发数据分析代码时,经常会遇到需要改变运行参数的情况,比如select语句中对日期字段值的设定,可能不同时间想要看不同日期的数据,这就需要能动态改变日期的值.如果开发量较大.参数多的话, ...
随机推荐
- 点这里进入ABP系列文章总目录
基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boi ...
- Spring注解@Component、@Repository、@Service、@Controller,@Autowired、@Resource用法
一.Spring定义bean,@Component.@Repository.@Service 和 @Controller Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥 ...
- HDU5673 Robot 默慈金数
分析: 注:然后学了一发线性筛逆元的姿势 链接:http://blog.miskcoo.com/2014/09/linear-find-all-invert #include<iostream& ...
- Oracle行转列的函数
--行转列的函数-- CREATE OR REPLACE FUNCTION Calvin( col IN VARCHAR2,dw IN VARCHAR2) RETURN VARCHAR2 IS ret ...
- JSP-讲解(生成java类、静态导入与动态导入)
一.JSP技术简介 JSP是Java Server Page的缩写,它是Servlet的扩展,它的作用是简化网站的创建和维护. JSP是HTML代码与Java代码的混合体. JSP文件通常以JSP或J ...
- [CODEVS3299]有序数组合并求第K大问题
题目描述 Description 给出两个有序数组A和B(从小到大有序),合并两个有序数组后新数组c也有序,询问c数组中第k大的数 假设不计入输入输出复杂度,你能否给出一个O(logN)的方法? 输入 ...
- Sublime Text2使用心得
代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一位程序员,同样会去追求最适合自己的强大.灵活的编辑器,相信你和我一样,都不会例外. 我用过 ...
- HW2.5
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- CentOS设置在同一窗口打开文件夹
默认情况下,CentOS双击文件夹会打开一个新窗口.这对于习惯Windows的用户会感觉非常别扭.其实,如果用鼠标中键双击文件夹,就不会打开新窗口了.当然,也可以按照如下设置: 1. 打开任意一个文 ...
- 常用apt cli
常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get ...