Category Archives: Java

「Spring入門」SchemaContextHolderの使い方

1.SchemaContextHolder.java
public class SchemaContextHolder {
private static ThreadLocal<SchemaType> contextHolder = new ThreadLocal<SchemaType>();

public static void setSchemaType(SchemaType datasourcename) {
Assert.notNull(datasourcename, “Schema type cannot be null.”);
contextHolder.set(datasourcename);
}

public static SchemaType getSchemaType() {
return contextHolder.get();
}

public static void clear() {
contextHolder.remove();
}
}

2.enumクラス
public enum SchemaType {
ADMIN,
MASTER
}

3.Javaコード
public List<Employee> listinfo(@RequestParam(“ds”) String ds){
if(ds.equals(“ds1”)){
SchemaContextHolder.setSchemaType(SchemaType.ADMIN);
}else{
SchemaContextHolder.setSchemaType(SchemaType.MASTER);
}
return empService.listInfo();
}

「Spring入門」@ResponseBodyを利用するサンプル

Javaコード
@Controller
@RequestMapping(value = “/address/sta”)
public class AddressController {

@RequestMapping(value=”/userList”, method=RequestMethod.GET)
@ResponseBody
public List<Employee> userList() {
return searEmployeeList();
}

「Java8入門」for文で繰り返し処理のサンプル

Javaコード:
package sample;
public class Dccr {

public static void main(String[] args) {
String []cft = {“data1″,”data2″,”data3″,”data4”};
System.out.println(“output message:”);
for(String val:cft){
System.out.println(val);
}

}

}

結果
output message:
data1
data2
data3
data4

「Java入門」BigDecimalを使用して小数点以下の四捨五入のサンプル

1.Javaコード
package zhongg;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalDemo {

public static void main(String[] args) {

Test aa = new Test();
aa.kdFunc();

}

}

class Test {
void kdFunc() {

double kdf = 21.3556;
BigDecimal cft = new BigDecimal(String.valueOf(kdf));
System.out.println(“小数点以下の四捨五入”);

// 小数第1位
BigDecimal cft1 = cft.setScale(0, RoundingMode.HALF_UP);
System.out.println(cft1.toPlainString()); // 21

// 小数第2位
BigDecimal cft2 = cft.setScale(1, RoundingMode.HALF_UP);
System.out.println(cft2.toPlainString()); // 21.4

// 小数第3位
BigDecimal cft3 = cft.setScale(2, RoundingMode.HALF_UP);
System.out.println(cft3.toPlainString()); // 21.36

// 小数第4位
BigDecimal cft4 = cft.setScale(3, RoundingMode.HALF_UP);
System.out.println(cft4.toPlainString()); // 21.356
}
}

2.結果
小数点以下の四捨五入
21
21.4
21.36
21.356

「Spring入門」form:optionをc:forEachを使用して生成するサンプル

Javaコード 

<form:select path=”cityId” id=”cityId” value=”cityVal”>

<form:option value=”defaultCityVal” label=”defaultCityVal” />

<c:if test=”xxx値”>

<c:if test=”${null != CityNameList}”>

<c:forEach var=”t” varStatus=”s” items=”${CityNameList}”>

<form:option value=”t.cityName}” label=”t.cityName” />

</c:forEach>

</c:if>

</c:if>

</form:select>

「Java入門」PropertyDescriptor で setter/getter メソッドを設定するコード

1.EntityUtils.java
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

public class EntityUtils {

/**
* カプセル化されたエンティティオブジェクトに動的に値を設定します。
* @param entity エンティティオブジェクト
* @param propertyName プロパティ名
* @param value 設定する値
*/
public static final void setEntityValue(Object entity, String propertyName, Object value){
try {

// フィールド名とクラスをコンストラクタの引数にインスタンス生成
PropertyDescriptor pd = new PropertyDescriptor(propertyName, entity.getClass());
//setterメソッドを取得する
Method setterMethod = pd.getWriteMethod();
//setterメソッドを動的実行
setterMethod.invoke(entity, value);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

/**
* カプセル化されたエンティティオブジェクトから動的に値を取得します。
* @param clazz エンティティのクラス
* @param entity エンティティオブジェクト
* @param propertyName プロパティ名
* @return エンティティオブジェクトのプロパティから取得した値。
*/
public static final Object getEntityValue(Object entity, String propertyName){
Object ret = null;
try {
// フィールド名とクラスをコンストラクタの引数にインスタンス生成
PropertyDescriptor pd = new PropertyDescriptor(propertyName, entity.getClass());
// getterメソッドを取得する
Method getterMethod = pd.getReadMethod();
// getterメソッドを動的実行
ret = getterMethod.invoke(entity);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return ret;
}

}

2.TestCC.java
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.Date;

public class TestCC {
public static void main(String[] args) {

TestDto cft = new TestDto();

// getDeclaredFields メソッドを使用
Field[] fields = cft.getClass().getDeclaredFields();

// メソッドを実行する際のパラメータ
Object[] paramsList = {Integer.valueOf(44), “テスト”, new BigDecimal(“33”), new Date()};

// 値の設定
for(int i = 0; i < fields.length; i++){
String propertyName = fields[i].getName();
try {
EntityUtils.setEntityValue(cft, propertyName, (Object)paramsList[i]);
} catch (Exception e) {
e.printStackTrace();
break;
}
}

// 値の出力
for(int i = 0; i < fields.length; i++){
String propertyName = fields[i].getName();
try {
System.out.println(EntityUtils.getEntityValue(cft, propertyName));
} catch (Exception e) {
e.printStackTrace();
break;
}
}
}

3.TestDto.java
import java.math.BigDecimal;
import java.util.Date;

public class TestDto {

private int obj1 = 0;
private String obj2;
private BigDecimal obj3;
private Date obj4;

public int getObj1() {
return obj1;
}
public void setObj1(int obj1) {
this.obj1 = obj1;
}
public String getObj2() {
return obj2;
}
public void setObj2(String obj2) {
this.obj2 = obj2;
}
public BigDecimal getObj3() {
return obj3;
}
public void setObj3(BigDecimal obj3) {
this.obj3 = obj3;
}
public Date getObj4() {
return obj4;
}
public void setObj4(Date obj4) {
this.obj4 = obj4;
}

}

参考URL
http://isann.blog2.fc2.com/blog-entry-221.html

「Spring入門」value 属性とmethod 属性の使い方

1.value属性
@RequestMapping(value = “/user”)
@RequestMapping(path = “/user”)

@RequestMapping(value = { “/”, “/index” })
@RequestMapping({ “/”, “/index” })

 

2.method属性
POSTリクエスト
@RequestMapping(path = “/input”, method = RequestMethod.POST)
GETリクエスト
@RequestMapping(path = “/input”, method = RequestMethod.GET)
両方のリクエスト
@RequestMapping(path = “/input”, method = { GET, POST })

「Spring 入門」@ModelAttributeアノテーションを利用するサンプル

Javaコード:
@Controller
@RequestMapping(“students”)
public class StudentController {

@Autowired
StudentService studentService;

@ModelAttribute
StudentForm setUpForm() {
return new StudentForm();
}

@RequestMapping(value = “create”, method = RequestMethod.POST)
String create(@Validated StudentForm form, BindingResult result, Model model) {
if (result.hasErrors()) {
return list(model);
}
Student student = new Student();
BeanUtils.copyProperties(form, student);
studentService.create(student);
return “redirect:/students”;
}
//some code
}

「Spring入門」1つのform中に複数のsubmitボタン対応サンプル

1.JSPコード
<form action=”/employee/edit” method=”post” >
<input type=”text” id=”userName” name=”userName” />
<input type=”text” id=”addRess” name=”addRess” />

<input type=”submit” name=”doBack” value=”戻る” />
<input type=”submit” name=”doUpdate” value=”更新” />
</form>

 

2.Javaコード
@Controller
@RequestMapping(“employee”)
public class EmployeeController {

@RequestMapping(value = “edit”, params = “doBack”, method = RequestMethod.POST)
String doBack(/* xxx */) {
//some code
}

@RequestMapping(value = “edit”, params = “doUpdate”, method = RequestMethod.POST)
String doUpdate(/* xxx */) {
//some code
}
}

「Spring入門」form:selectとc:forEachを利用するサンプル

1.書式

<c:forEach items=”[コレクション]” var=”[変数名]”>

繰り返し処理

</c:forEach>
2.JSPコード

<form:select path=”userName” id=”userName”>

<form:option value=””></form:option>

<c:forEach var=”cft” items=”${userInfoList}”>

<form:option value=”${cft.stuId}” label=”${cft.stuName}” />

</c:forEach>

</form:select>