Struts+ibatis-学习总结二

1封装json

在Action中以传统方式输出JSON数据


这一点跟传统的Servlet的处理方式基本上一模一样,代码如下

Java代码  收藏代码
  1.  
public void doAction() throws IOException{
		HttpServletResponse response=ServletActionContext.getResponse();
		//以下代码从JSON.java中拷过来的
		response.setContentType("text/html");
		PrintWriter out;
		out = response.getWriter();
		//将要被返回到客户端的对象
		User user=new User();
		user.setId("123");
		user.setName("JSONActionGeneral");
		user.setPassword("JSON");
		user.setSay("Hello , i am a action to print a json!");
		JSONObject json=new JSONObject();
		json.accumulate("success", true);
		json.accumulate("user", user);
		out.println(json.toString());
//		因为JSON数据在传递过程中是以普通字符串形式传递的,所以我们也可以手动拼接符合JSON语法规范的字符串输出到客户端
//		以下这两句的作用与38-46行代码的作用是一样的,将向客户端返回一个User对象,和一个success字段
//		String jsonString="{"user":{"id":"123","name":"JSONActionGeneral","say":"Hello , i am a action to print a json!","password":"JSON"},"success":true}";
//		out.println(jsonString);
		out.flush();
		out.close();
	}

struts.xml中的配置:

Java代码  收藏代码
  1.  
<package name="default" extends="struts-default" namespace="/">
	<action name="testJSONFromActionByGeneral" class="cn.ysh.studio.struts2.json.demo.action.UserAction" method="doAction">
	</action>
</package>

注意:这个action没有result,且doAction方法没有返回值!

在Action中以Struts2的方式输出JSON数据

本着“不重复发明轮子”的原则,我们将转换JSON数据的工作交给Struts2来做,那么相对于在Action中以传统方式输出JSON不同的是,Action是需要将注意力放在业务处理上,而无需关心处理结果是如何被转换成JSON被返回客户端的——这些 工作通过简单的配置,Struts2会帮我们做的更好。

Java代码  收藏代码
  1.  
public String testByAction() {
		// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
		dataMap.clear();
		User user = new User();
		user.setId("123");
		user.setName("JSONActionStruts2");
		user.setPassword("123");
		user.setSay("Hello world !");
		dataMap.put("user", user);
		// 放入一个是否操作成功的标识
		dataMap.put("success", true);
		// 返回结果
		return SUCCESS;
	}

struts.xml中action的配置:

Java代码  收藏代码
  1.  
<package name="json" extends="json-default" namespace="/test">
		<action name="testByAction"
			class="cn.ysh.studio.struts2.json.demo.action.UserAction" method="testByAction">
			<result type="json">
				<!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
				<param name="root">dataMap</param>
			</result>
		</action>
</package>

凡是使用Struts2序列化对象到JSON的action,所在的package必须继承自json-default,注意,这里唯一的result,没有指定name属性。

2 sql server分页查询

SELECT A.*
FROM(select *, ROW_NUMBER() over(order by ID) as rows from MyHz.dbo.NCParameterMod)A where A.rows>=5;

3自增长的id重新排列

数据库中把ID自增长重置成1:

一般做法:(太麻烦)

复制表数据->删除原表、新建一张表->粘贴;

新方法一

数据库中:新建查询->复制、粘贴一下代码->修改表名,执行即可(先把表数据清空)

 DBCC CHECKIDENT ('表名', RESEED, 0)

新方法二

TRUNCATE TABLE 表名

来源:http://blog.csdn.net/u013816709/article/details/26245907

 SQLSERVER的最大连接数

如何查看SQLServer的最大连接数?相信很多人对个很有兴趣,一下就给出两种方法:

1. 查询服务器属性

  

默认服务设置为0(表示不受限制)。

2. SQL查看最大连接数

  

这里的32767就是服务器的最大连接数了。

如果你想自己设置服务器的最大连接数,可以使用以下SQL

1
2
exec sp_configure 'show advanced options', 1
exec sp_configure 'user connections', 500

 参考:http://www.cnblogs.com/rainnight/archive/2013/12/18/3480122.html

异常处理

 异常又分为 局部异常处理 和 全局异常处理

在struts.xml中声明捕捉异常,使其转成自定义错误提示界面

局部异常处理,定义在action标签内:

struts.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.       
  6. <struts>  
  7.       
  8.    <package name="struts2" extends="struts-default">      
  9.        
  10.       <!-- name="login" 这个名字可以自己定义 要和 提交表单的那个action名字一致 -->  
  11.        
  12.       <action name="login" class="com.struts2.LoginAction">  
  13.               
  14.             <!-- 局部 异常处理 -->  
  15.             <exception-mapping result="myexception1"  
  16.                exception="com.exception.MyException">             
  17.             </exception-mapping>  
  18.             <!-- 异常跳转的界面 -->  
  19.             <result name="myexception1">/error.jsp</result>  
  20.                
  21.                
  22.             <!-- name="success"   
  23.                                   这个名字要和LoginAction.java 的 execute() 方法的返回值一致   
  24.             -->  
  25.             <result name="success">/result.jsp</result>  
  26.               
  27.       </action>  
  28.      
  29.    </package>   
  30.   
  31. </struts>  
 
 
全局异常处理,定义在action标签外:

struts.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.       
  6. <struts>  
  7.       
  8.    <package name="struts2" extends="struts-default">  
  9.         
  10.       <!-- 全局 异常处理 -->  
  11.       <global-results>  
  12.           <result name="myexception1">/error.jsp</result>  
  13.       </global-results>  
  14.         
  15.       <global-exception-mappings>  
  16.           <exception-mapping result="myexception1"  
  17.                exception="com.exception.MyException">             
  18.           </exception-mapping>  
  19.       </global-exception-mappings>  
  20.        
  21.       <!-- name="login" 这个名字可以自己定义 要和 提交表单的那个action名字一致 -->  
  22.        
  23.       <action name="login" class="com.struts2.LoginAction">  
  24.               
  25.                
  26.             <!-- name="success"   
  27.                                   这个名字要和LoginAction.java 的 execute() 方法的返回值一致   
  28.             -->  
  29.             <result name="success">/result.jsp</result>  
  30.               
  31.       </action>  
  32.      
  33.    </package>   
  34.   
  35. </struts>  

4.错误页面error.jsp,

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="s"  uri="/struts-tags"%>    
  3. <html>  
  4.   <body>  
  5.     <!-- 这个exception 是 exception="com.exception.MyException" -->  
  6.     <s:property value="exception.message"/>  
  7.   </body>  
  8. </html>  
</struts>

 自定义一个异常,该异常继承Exception父类

  1. package com.exception ;  
  2.   
  3. //自定义异常  
  4. public class MyException extends Exception {  
  5.       
  6.     private String message;  
  7.       
  8.     public MyException(String message)  
  9.     {  
  10.         super(message);  
  11.         this.message = message ;  
  12.     }  
  13.   
  14.     public String getMessage() {  
  15.         return message;  
  16.     }  
  17.   
  18.     public void setMessage(String message) {  
  19.         this.message = message;  
  20.     }  
  21.       
  22.   
  23. }  

来源:http://blog.csdn.net/hzc543806053/article/details/7493268

打印日志、sql语句

配置log4j.properties文件,copy如下代码:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n


log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.Java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout

记得加入jar包,common-logging.jar ;    log4j.jar,

 修改项目名称

右键-重命名       这并不能修改发布的项目名称,需要继续以下操作:

最后保存即可

原文地址:https://www.cnblogs.com/manmanlu/p/6878707.html