이번 포스팅은 파일 생성 시 발생한 오류에 대하여 알아보도록 하겠습니다.
<Error>
Invalid file name: must contain only [a-z0-9_.] 오류
|
<Solution>
파일명 영어소문자 나 0~9까지의 숫자만 허용하는데 그 이외의 문자가 들어간 경우이므로 허용하는 문자를 제외하고 파일명을 수정 |
이번 포스팅은 파일 생성 시 발생한 오류에 대하여 알아보도록 하겠습니다.
<Error>
Invalid file name: must contain only [a-z0-9_.] 오류
|
<Solution>
파일명 영어소문자 나 0~9까지의 숫자만 허용하는데 그 이외의 문자가 들어간 경우이므로 허용하는 문자를 제외하고 파일명을 수정 |
InformationInput .java
package com.androidhuman.IntentTest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class InformationInput extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button requestInfo = (Button)findViewById(R.id.requestInfo);
// 버튼을 클릭할 경우
requestInfo.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
Intent intent = new Intent(InformationInput.this,InformationProc.class);
// Sub_Activity 호출
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
TextView name_view = (TextView)findViewById(R.id.name_view);
TextView digit_view = (TextView)findViewById(R.id.digit_view);
// 액티비티가 정상적으로 종료되었을 경우
if(resultCode==RESULT_OK) {
// InformationInput에서 호출한 경우에만 처리합니다.
if(requestCode==1) {
// 받아온 이름과 전화번호를 InformationInput 액티비티에 표시name_view.setText(data.getStringExtra("data_name"));
digit_view.setText(data.getStringExtra("data_digit"));
}
}
}
}
InformationProc .java
package com.androidhuman.IntentTest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class InformationProc extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.informationproc);
Button input_info = (Button)findViewById(R.id.inputinfo);
input_info.setOnClickListener(new OnClickListener(){
//버튼을 클릭하면
public void onClick(View v) {
// 이 액티비티를 시작하게 한 인텐트를 호출
Intent intent = getIntent();
EditText name_input = (EditText)findViewById(R.id.name_input);
EditText digit_input = (EditText)findViewById(R.id.digit_input);
intent.putExtra("data_name",name_input.getText().toString());
intent.putExtra("data_digit", digit_input.getText().toString());
// 추가 정보를 넣은 후 다시 인텐트를 반환합니다.
setResult(RESULT_OK,intent);
// 액티비티 종료
finish();
}
});
}
}
[Android] GC_CONCURRENT FREED 라는 에러 메시지 (0) | 2020.04.08 |
---|---|
[Android] Context (0) | 2020.04.08 |
[Android ] Intent FLAG (0) | 2020.04.08 |
[Android] ArrayList 객체를 Intent로 전달하는 방법 (3) | 2020.04.08 |
[Android] MoveEvent Value (0) | 2020.04.08 |
이번 포스팅은 JSP 화면에 보이는 데이터를 엑셀 파일로 저장하는 방법에 대하여 알아보도록 하겠습니다.
JSP 화면에서 검색 조건을 제목으로 하여 검색하여 찾은 데이터를 리스트 형태로 조회하는 화면이 있을 때에 <EXCEL 파일 저장>이라는 버튼을 클릭하면 조건으로 들어가는 제목을 파라미터로 갖고 엑셀파일을 보여줄 수 있는 pop-up대용의 JSP화면으로 보내줍니다.
#. list.jsp
<%@ page contentType="text/html;charset=euc-kr" %>
<html>
.....
function toXLS() {
var address = "/jsp/excel.jsp?title=타이틀&file_name=리스트.xls";
location.href = address;
}
.....
<body>
.....
<a href="javascript:toXLS()"><strong>EXCEL 파일저장</strong></a>
.....
</body>
</html>
아래는 중요한 excel.jsp인데 JSP화면의 설정 코드를 눈여겨보아야 합니다.
#. excel.jsp
<%@ page contentType="application/vnd.ms-excel;charset=euc-kr" %>
===> contentType를 반드시 위와 같이 정의해주어야 원하는 결과를 얻을 수 있습니다.
<%
String file_name = request.getParameter("title");
response.setHeader("Content-Disposition", "attachment; filename=""+file_name+"";");
===> 저장할 시에 기본적으로 설정되는 파일명을 지정하고(여기서는 order_list.xls)
반드시 attachment로 설정을 해야 파일 열기, 저장 중에 선택하는 메시지가 뜹니다.
response.setHeader("Content-Description", "JSP Generated Data");
===> 정확히 어떤 정의였는지는 자세히 기억이 나지 않지만 필수적으로 설정해야 합니다.
String title = request.getParameter("title");
... ( title파라미터를 이용하여 DB에서 해당 목록을 ResultSet으로 받아온다. )
%>
<html>
<head>
<title>엑셀파일변환</title>
</head>
<body bgcolor=white>
<table border=1>
<tr bgcolor="#CACACA">
<th>지시일자</th>
<th>완료일</th>
<th>담당자</th>
<th>현 황</th>
<th>제 목</th>
</tr>
<%
while(rs.next()) {
%>
<tr>
<td><%=rs.getString("ord_date")%></td>
<td><%=rs.getString("cmp_date")%></td>
<td><%=rs.getString("charge_name")%></td>
<td><%=rs.getString("state_name")%></td>
<td><%=rs.getString("subject")%></td>
</tr>
<%
}
%>
</table>
</body>
</html>
이렇게 화면이 만들어지고 <EXCEL 파일 저장>을 클릭하게 되면 order_list.xls (지정한 파일명)를 현재 위치에서 열 것인지 저장할 것인지를 묻는 창이 뜹니다.
여기에서 저장을 하게 되면 이름을 바꿔서 저장이 가능하고, 열기를 선택하면 excel.jsp에 구성된 내용들이 현재 화면에 엑셀 형식으로 보이게 됩니다.
처음 참고자료를 뒤졌을 때 excel.jsp의 attachment 부분이 다른 방식으로 지정되면 곧바로 엑셀 파일 열기가 실행되어 난감했던 기억이 납니다.
반드시 attachment을 해야만 저장을 묻는다는 것을 기억해야 합니다.
참고 : http://scblood.egloos.com/2542763
[Web] 뷰 컴포넌트 통신 (0) | 2022.09.19 |
---|---|
[Web] 뷰 컴포넌트 (0) | 2022.09.18 |
[Web] 뷰 인스턴스 라이프 사이클 (0) | 2022.09.18 |
[Web] 뷰 인스턴스 (0) | 2022.09.18 |
[Web] JSP / Servlet/ Java 현재 경로 알아내기 (0) | 2020.04.08 |