实现功能:java 从一个工程action 跳转到另外一个工程action

在我们实际编程的过程中,大家一定遇到过这种情况,那就是在一个工程中,需要使用到另外一个工程的实体Bean和方法。那么遇到这种情况我们应该怎么处理呢?就可以采用下面这种方法,将工程一中的参数传到工程二中来使用。最后得到我们需要的结果。详情代码如下:

工程一action:

@Controller
@RequestMapping("/conferences.do")
public class ConferencesAction extends BasicAction implements ServletContextAware{
private ConferencesService conferencesService;
private ServletContext servletContext;
private AdminuserOperatingService adminuserOperatingService;
private AdminuserService adminuserService;
private AdminuserConferencesService adminuserConferencesService;
private ClientVersionService clientVersionService;
private DataService dataService;
private SpeakerService speakerService;
private SessiongroupService sessiongroupService;
private CheckCodesChyService checkCodesChyService;
private EsmoService esmoService;
//课件信息统计
@RequestMapping(params = "method=getKeJianCount",method = RequestMethod.GET)
public void getKeJianCount(String[] bank2,String startTime,String endTime,ModelMap model,HttpServletRequest request,HttpServletResponse response)
{
try {
JSONObject result = new JSONObject();
String bank2String = "";
int bank2Length = bank2.length;
int state = 0;
if(bank2Length != 0){
for (int i = 0; i < bank2Length; i++) {
bank2String = bank2[i]+",";
}
int bank2StringLength = bank2String.length();
bank2String = bank2String.substring(0, (bank2StringLength-1));
HashMap<String,String> map = new HashMap<String, String>();
String url = request.getScheme()+"://"+request.getServerName()+":"+request.getLocalPort()+"/Exam";
startTime = URLEncoder.encode(startTime,"UTF-8");
endTime = URLEncoder.encode(endTime,"UTF-8");
HttpUtils httpUtils = new HttpUtils();
map.put("method", "getKeJianCount1");
map.put("bank2", bank2String);
map.put("startTime", startTime);
map.put("endTime", endTime);
String jsonString = httpUtils.httpGet(url+"/data", map);
JSONObject jsObject = JSONObject.fromObject(jsonString);
result.accumulate("url", jsObject.getString("url"));
state = 1;
result.accumulate("state", state);
writeToJson(response, result.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

工程二action:

@Controller
@RequestMapping("/data")
public class DataAction extends BasicAction{ @Resource(name="dataService")
private DataService dataService; //课件信息统计
@RequestMapping(params = "method=getKeJianCount1",method = RequestMethod.GET)
public void getKeJianCount1(String startTime,String endTime,ModelMap model,HttpServletRequest request,HttpServletResponse response)
{
String urlPath = request.getScheme()+"://"+request.getServerName()+request.getContextPath();
XSSFWorkbook rwb1 = new XSSFWorkbook();
while(true)
{
if(rwb1.getNumberOfSheets() != 0){
rwb1.removeSheetAt(0);
}
else{
break;
}
}
try {
String bank2 = request.getParameter("bank2");
String[] keJianTypeArray = bank2.split(",");
XSSFSheet ws1 = rwb1.createSheet("课件统计");
ws1.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
ws1.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
ws1.addMergedRegion(new CellRangeAddress(0, 1, 2, 2));
int count = 0;//行
XSSFRow row1 = ws1.createRow(count);
row1.createCell(0).setCellValue("课件类别");
row1.createCell(1).setCellValue("课件标题");
row1.createCell(2).setCellValue("课件作者");
row1.createCell(3).setCellValue("APP");
count++;
XSSFRow row4 = ws1.createRow(count);
row4.createCell(3).setCellValue("总点击次数"); if(keJianTypeArray != null){
int keJianTypeArrayLength = keJianTypeArray.length;
//1、遍历model_id 数组
for (int i = 0; i < keJianTypeArrayLength; i++) {
int modelId = Integer.valueOf(keJianTypeArray[i]);
String keJianType = modelId == 40?"CSCO年会 2016": modelId == 31?"CSCO年会 2017":modelId == 42 ?"BOA 2017":modelId == 39?"CSCO指南会 2017":"CSCO免疫肿瘤高峰论坛 2017";
//根据modelId查询某个课件类别的总点击量
int tatolClickNum = dataService.countKeJianTatolNumByModelId(modelId,startTime,endTime);
count++;
XSSFRow row2 = ws1.createRow(count);
row2.createCell(0).setCellValue(keJianType);
row2.createCell(1).setCellValue("所有课件总和");
row2.createCell(3).setCellValue(tatolClickNum);
//2、根据model_id 来查询资源集合
List<Data> dataList = dataService.getDataListByModelId(modelId);
//3、遍历得到的资源集合 得到统计数据
if(dataList != null && dataList.size() != 0){
for (Data data : dataList) {
Integer dataId = data.getDataId();
String keJianTitle = data.getTitle();
String keJianAuthor = data.getAuthor();
//4、根据dataId统计被点击的次数
int clickNum = dataService.countKeJianNumByDataId(dataId,startTime,endTime);
count++;
XSSFRow row3 = ws1.createRow(count);
row3.createCell(0).setCellValue(keJianType);
row3.createCell(1).setCellValue(keJianTitle);
row3.createCell(2).setCellValue(keJianAuthor);
row3.createCell(3).setCellValue(clickNum);
}
}
}
}
String filePath = request.getSession().getServletContext().getRealPath("files/execl");
File conFile = new File(filePath); //目录结构
if(!conFile.exists())
{
conFile.mkdir();
}
String fileName = "keJianCount.xlsx";
File file = new File(filePath+"/"+fileName);
if(file.exists())
{
file.delete();
}
else{
file.createNewFile();
}
FileOutputStream fout = new FileOutputStream(file);
rwb1.write(fout);
fout.close();
JSONObject jsonObject = new JSONObject();
jsonObject.accumulate("url",urlPath+"/files/execl/"+fileName);
writejson(response, jsonObject.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}

工具类:

public class HttpUtils {
public static String httpGet(String urlAddress,Map<String, String> paramMap){
if(paramMap==null){
paramMap = new HashMap<String, String>();
}
String [] params = new String[paramMap.size()];
int i = 0;
for(String paramKey:paramMap.keySet()){
String param = paramKey+"="+paramMap.get(paramKey);
params[i] = param;
i++;
}
return httpGet(urlAddress, params);
}
public static String httpGet(String urlAddress,String []params){
URL url = null;
HttpURLConnection con =null;
BufferedReader in = null;
StringBuffer result = new StringBuffer();
try {
String paramsTemp = "";
for(String param:params){
if(param!=null&&!"".equals(param.trim())){
paramsTemp+="&"+param;
}
}
if(paramsTemp.length() >0){
urlAddress = urlAddress+"?"+paramsTemp.substring(1,paramsTemp.length());
}
System.out.println(urlAddress);
url = new URL(urlAddress); con = (HttpURLConnection) url.openConnection();
con.setUseCaches(false);
con.setRequestProperty("Cookie", "");
con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("User-agent", " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0"); in = new BufferedReader(new InputStreamReader(con.getInputStream(),"utf-8"));
while (true) {
String line = in.readLine();
System.out.println(line);
if (line == null) {
break;
}
else {
result.append(line);
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(in!=null){
in.close();
}
if(con!=null){
con.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result.toString();
}
}

 工具类的测试方法:

public static void main(String[] args) {
HashMap<String, String> param = new HashMap<String, String>();
param.put("id", "7102");
try {
param.put("giveName", URLEncoder.encode("ghris zhang","utf-8"));
} catch (Exception e) {
e.printStackTrace();
}
param.put("language", "en");
String result = HttpUtils.httpPost("http://reg.csco.org.cn/reg2015/io/check.asp", param);
System.out.println(result);
/*String enResult = "";
byte[] b = Base64.decodeFast("eyJpZCI6MTcwMCwibmFtZSI6IgAAACIsImdpdmVOYW1lIjoiAAAAIiwiZmFtaWx5TmFtZSI6InpoYW5ndGllYmlhbyIsIm1vYmlsZSI6IjE1MjIxNjUzNDAwIiwiZW1haWwiOiIyNzY3MzkyNzFAcXEuY29tIiwiYWRkcmVzcyI6IgAAAAAiLCJqb2JUaXRsZSI6IgAAIiwiRGVwYXJ0bWVudCI6IgAAIiwicGF5U3RhdGUiOjAsImlzbWVtYmVyIjowLCJzdGF0ZSI6MSwibXNnIjoiT0sifQ==");
List<Byte> bList = new ArrayList<Byte>();
try{
for (byte c : b) {
if(c != 0){
bList.add(c);
}
}
byte [] b1 = new byte[bList.size()];
for (int i = 0;i < bList.size();i++) {
b1[i] = bList.get(i);
}
enResult = new String(b1, "utf-8");
JSONObject json = JSONObject.fromObject(enResult);
System.out.println(json);
}catch(Exception e) {
e.printStackTrace();
} */
}

 宽容别人,就是肚量;谦卑自己,就是份量;合起来,就是一个人的质量。

java 从一个工程action 跳转到另外一个工程action的更多相关文章

  1. struts2 从一个action跳转到另一个action的struts.xml文件的配置

    解释: 想要用<result>跳转到另一个action,原来的配置代码是: <action name="insertDept" class="strut ...

  2. play的action链(一个action跳转到另一个action,类似于重定向)

    在play中没有Servlet API forward 的等价物.每一个HTTP request只能调用一个action.如果我们需要调用另一个,必须通过重定向,让浏览器访问另一个URL来访问它.这样 ...

  3. Egret白鹭开发微信小游戏程序跳转功能(由一个小游戏跳转到另一个小游戏)

    假设我们要实现的功能是从小游戏A跳转到小游戏B 对于小游戏A: (1)在platform.ts中添加代码如下: /** * 平台数据接口. * 由于每款游戏通常需要发布到多个平台上,所以提取出一个统一 ...

  4. Qt中实现点击一个label,跳转到打开一个浏览器链接

    配置模块 首先需要在.pro配置文件中添加QT += network 重写自定义Label .h文件 class MyClickLabel : public QLabel { Q_OBJECT pub ...

  5. windows server 证书的颁发与IIS证书的使用 Dapper入门使用,代替你的DbSQLhelper Asp.Net MVC中Action跳转(转载)

    windows server 证书的颁发与IIS证书的使用   最近工作业务要是用服务器证书验证,在这里记录下一. 1.添加服务器角色 [证书服务] 2.一路下一步直到证书服务安装完成; 3.选择圈选 ...

  6. C# MVC 用户登录状态判断 【C#】list 去重(转载) js 日期格式转换(转载) C#日期转换(转载) Nullable<System.DateTime>日期格式转换 (转载) Asp.Net MVC中Action跳转(转载)

    C# MVC 用户登录状态判断   来源:https://www.cnblogs.com/cherryzhou/p/4978342.html 在Filters文件夹下添加一个类Authenticati ...

  7. Struts2 : action跳转时带参数跳转

    在实现action跳转到另一个action时,需要携带参数,可以直接在struts.xml配置文件中对应的跳转action的地方加上,参数的配置,用ognl表达式,可以从session中取值. 如果要 ...

  8. Struts2 从一个Action跳至另一个Action

    Struts2  从一个Action跳至另一个Action 一.注解的 @Result(name=SUCCESS,type="chain", params={"actio ...

  9. Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法

    Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx" ...

随机推荐

  1. Windows Server 2008环境下Apache2.4+Tomcat8配置

    安装步骤 1. 安装配置JDK2. 安装配置Apache3. 安装配置Tomcat4. 启动服务并测试 一.Apache安装与配置 1.Apache解压在D盘根目录下建立一个文件夹Apache Gro ...

  2. mysql查看配置生效

    mysql> show status like 'Threads%';+-------------------+-------+| Variable_name     | Value |+--- ...

  3. [spring源码] 小白级别的源码解析ioc(二)

    之前一篇,整体描述了一下 Spring的整体概况和 jar包的介绍. 现在开始进入具体的源码解析,从本篇开始,先介绍spring的ioc容器.之前也看过一些介绍spring源码的, 有的是只讲整体的接 ...

  4. mysql查询今日、本周、本月记录

    SELECT * FROM table_name WHERE to_days(createtime) = to_days(now()); SELECT * FROM table_name WHERE ...

  5. 【转】 SQL - 生成指定范围内的随机数

    DECLARE @Result INT DECLARE @Upper INT DECLARE @Lower INT SET @Lower = 1 SET @Upper = 10 SELECT @Res ...

  6. ceph问题总结

    之前测试用ceph总是警告 health HEALTH_WARN pool cephfs_metadata2 has many more objects per pg than average (to ...

  7. ES6学习笔记(二)—— 通过ES6 Module看import和require区别

    前言 说到import和require,大家平时开发中一定不少见,尤其是需要前端工程化的项目现在都已经离不开node了,在node环境下这两者都是大量存在的,大体上来说他们都是为了实现JS代码的模块化 ...

  8. Guava:好用的java类库 学习小记

    基础功能 google guava中定义的String操作 在google guava中为字符串操作提供了很大的便利,有老牌的判断字符串是否为空字符串或者为null,用指定字符填充字符串,以及拆分合并 ...

  9. Python中文问题

    读取数据库中文是?? 解决如下 一.python2版本需要在 文件的开头要加上编码设置来说明文件的编码  python3版本以上不需要 #encoding=utf-8 二.在连接数据的连接参数里加上字 ...

  10. codeblock不能调试

    问题:codeblock  不能调试,如下图: 解决方法: 首先,项目的保存路径不能是中文路径. 其次,必须创建工程. 最后,build选项里select target选成debug codebloc ...