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语句中对日期字段值的设定,可能不同时间想要看不同日期的数据,这就需要能动态改变日期的值.如果开发量较大.参数多的话, ...
随机推荐
- poj 1324 状态广搜
其实就是我们经常玩的贪吃蛇. 不过现在我们优先蛇的头的话,要用一个巧妙的哈希来把蛇的身体表达出来,那么就可以用一个4进制的数字来表示,蛇的身体长度最多不超过8,所以最多是2^7种状态. #includ ...
- C#值类型以及默认值记录下
C#的值类型有bool,byte,sbyte,decimal,double,float,int,uint,long,string等 如果我们擅长使用默认值,可以帮助我们减少带来赋值及代码编写. 比如我 ...
- ThreadLocal实现方式&使用介绍---无锁化线程封闭
虽然现在可以说很多程序员会用ThreadLocal,但是我相信大多数程序员还不知道ThreadLocal,而使用ThreadLocal的程序员大多只是知道其然而不知其所以然,因此,使用ThreadLo ...
- pop3
POP3_Client pop3 = new POP3_Client(); pop3, false); pop3.Authenticate("username", "pa ...
- ZOJ 3791 An Easy Game
思路:dp+记忆化搜索,设dp[n][m]表示s1与s2不同字符个数为n,还需要变m步的方法数,那么: dp[n][m] = (c[n][i]*c[N-n][K-i]) * dp[n-i+(K-i ...
- 常用的MAVEN公共私服
flex-mojo http://repository.sonatype.org/content/groups/flexgroup flex相关 http://nexus.5amsolutions.c ...
- xampp 访问出现New XAMPP security concept 或者 新しいXAMPPのセキュリティコンセプト
出现如下错误: 新しいXAMPPのセキュリティコンセプト: は.要求されたオブジェクトへのアクセスは.ローカルネットワークから入手可能です. この設定は.ファイル"で設定することができますの ...
- centos解决ping unknown host的问题
当ping www.baidu.com 的时候如果出现 unknown host的提示 再ping一下IP, ping 8.8.8.8 如果此时能ping通,那么就是DNS服务器没有设置,不能解析域名 ...
- 全面产品管理-从细微处认识"用户体验"
转载: 让我以一个故事开始本文,我觉得这个故事能概括大多数人听到“用户体验”这个术语时的想法. 我经常访问的一个财经网站给我发了一封电子邮件,请求我点击里面的一个链接,对一些信息进行审核.所以我就点了 ...
- Casio普通计算器编程
用xelatex写了个奇怪的东西……欢乐向 PDF http://files.cnblogs.com/htfy/calc.pdf TEX http://files.cnblogs.com/htfy/ ...