ただいま、UMLを作成する機会があり、
作成していますが、
覚える事がたくさん、
そのなかで分かりやすく解説してあるサイトがありましたので、
記載しておきます、
【改訂版】初歩のUML
2010年11月24日水曜日
2010年11月17日水曜日
1台のPCにfedora11を2つインストール デュアルブート
1台のPCにfedora11を2つインストールに成功、
http://www.linuxmania.jp/linux_multiboot.htmlを参考におこないました。
http://www.linuxmania.jp/linux_multiboot.htmlを参考におこないました。
2010年11月9日火曜日
UbuntuのCVSを調査
UbuntuのCVSを調査する機会がありましたのでちょっとメモってみます。
Concurrent Versions System(コンカレント・バージョンズ・システム)の事を
CVSと言うそうです。
■特徴として
サーバ上のファイルと自分の持っているファイルの差分のみを転送するだけで最新版を手にいれることが出来る、
■用語
①リポジトリとは?
サーバにプログラムを溜めておく場所、
リポジトリから自分のローカルPCにソースを落として作業すると言えば分かりやすいかな
②コミットとは?
リポジトリに作業の終わったソースをアップする事をコミットといいます。
つまりリポジトリに差分情報をアップデートする。
③チェックアウトとは?
リポジトリから初めてソースを自分のローカルPCに取り出す事をチェックアウトという
④アップデートとは?
他のだれかよりリポジトリが更新され、そのリポジトリソースを取り出し最新版に保つ事をアップデートと言う、
⑤ロック方式とは?
他のだれかがリポジトリからソースを取り出し編集作業を行っている時、その他の人は
そのソースを編集できないようにすることをロック方式
⑥コピー・マージ方式
編集完了後に変更した部分をシステム側に反映させる事をマージ、
その他の人も編集作業はできるが、編集箇所の競合が起きた時はマージする時点で解決するか、
一般的には、変更内容が競合する旨をユーザーに知らせ、内容を確認、修正させるの方法がとられることが多い。
⑦バージョン(リビジョン)番号
編集ファイルのバージョンの番号の事、
バージョン番号だけでなく、日付、時刻によってファイルをチェックアウトすることも可能になる。


Concurrent Versions System(コンカレント・バージョンズ・システム)の事を
CVSと言うそうです。
■特徴として
サーバ上のファイルと自分の持っているファイルの差分のみを転送するだけで最新版を手にいれることが出来る、
■用語
①リポジトリとは?
サーバにプログラムを溜めておく場所、
リポジトリから自分のローカルPCにソースを落として作業すると言えば分かりやすいかな
②コミットとは?
リポジトリに作業の終わったソースをアップする事をコミットといいます。
つまりリポジトリに差分情報をアップデートする。
③チェックアウトとは?
リポジトリから初めてソースを自分のローカルPCに取り出す事をチェックアウトという
④アップデートとは?
他のだれかよりリポジトリが更新され、そのリポジトリソースを取り出し最新版に保つ事をアップデートと言う、
⑤ロック方式とは?
他のだれかがリポジトリからソースを取り出し編集作業を行っている時、その他の人は
そのソースを編集できないようにすることをロック方式
⑥コピー・マージ方式
編集完了後に変更した部分をシステム側に反映させる事をマージ、
その他の人も編集作業はできるが、編集箇所の競合が起きた時はマージする時点で解決するか、
一般的には、変更内容が競合する旨をユーザーに知らせ、内容を確認、修正させるの方法がとられることが多い。
⑦バージョン(リビジョン)番号
編集ファイルのバージョンの番号の事、
バージョン番号だけでなく、日付、時刻によってファイルをチェックアウトすることも可能になる。


2010年11月8日月曜日
GoogleMap 経由地6つとスタートとゴールを最短で結ぶプログラムのマトメ
■この部分にデフォルトのセンター位置やMapのタイプを記述
var myOptions = {
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: starts
}
■myoptionを渡します
map = new google.maps.Map(document.getElementById("HTMLに表示するタグ"), myOptions);
■線を引きたい点と点を記述
var flightPlanCoordinates = [
new google.maps.LatLng(36.63615817578634,137.18512058258057), //富山空港周辺
new google.maps.LatLng(36.64442262062068,137.18276023864746)];
■new google.maps.Polylineのpathに上記のflightPlanCoordinatesを渡す
var flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
fillColor: '#ff0000'})
■ 線を描くMapを渡す
flightPath.setMap(map);
■ランドマークを記述
var stations = [
['富山総合公園', 36.638833,137.1981248],
['富山郵便局', 36.669182,137.234817],
■ランドマークをjQuery.eachでループ
jQuery.each(stations, function()
{
var latlng = new google.maps.LatLng(this[1], this[2]);
■経由地を代入
routes1 = document.getElementById("route1").value;//経由地1
routes2 = document.getElementById("route2").value;//経由地2
routes3 = document.getElementById("route3").value;//経由地3
■上記の経由地をwaypointに渡す
waypoints: [
{
location:routes1, //経由地変数1
stopover:false
},{
location:routes2,//経由地変数2
stopover:false
},{
location:routes3,
stopover:false
}],
■上記の経由地等をdirectionsService.routeに渡す
directionsService.route(request, function(result, status)
{
SetPolyline(result.routes[0].overview_path);
■ここでスタート地から経由地・ゴールまでの線を引きます
function SetPolyline(routePath)


var myOptions = {
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: starts
}
■myoptionを渡します
map = new google.maps.Map(document.getElementById("HTMLに表示するタグ"), myOptions);
■線を引きたい点と点を記述
var flightPlanCoordinates = [
new google.maps.LatLng(36.63615817578634,137.18512058258057), //富山空港周辺
new google.maps.LatLng(36.64442262062068,137.18276023864746)];
■new google.maps.Polylineのpathに上記のflightPlanCoordinatesを渡す
var flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
fillColor: '#ff0000'})
■ 線を描くMapを渡す
flightPath.setMap(map);
■ランドマークを記述
var stations = [
['富山総合公園', 36.638833,137.1981248],
['富山郵便局', 36.669182,137.234817],
■ランドマークをjQuery.eachでループ
jQuery.each(stations, function()
{
var latlng = new google.maps.LatLng(this[1], this[2]);
■経由地を代入
routes1 = document.getElementById("route1").value;//経由地1
routes2 = document.getElementById("route2").value;//経由地2
routes3 = document.getElementById("route3").value;//経由地3
■上記の経由地をwaypointに渡す
waypoints: [
{
location:routes1, //経由地変数1
stopover:false
},{
location:routes2,//経由地変数2
stopover:false
},{
location:routes3,
stopover:false
}],
■上記の経由地等をdirectionsService.routeに渡す
directionsService.route(request, function(result, status)
{
SetPolyline(result.routes[0].overview_path);
■ここでスタート地から経由地・ゴールまでの線を引きます
function SetPolyline(routePath)


Google App Engine を無料で使ってみた
googleアカウントは持っていたので、
というか、googleBlog書いてるから当たり前かですね、
http://code.google.com/intl/ja/appengine/
からGoogle App Engineの登録を行う、
http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/
にスタート ガイド: Javaがあるので、
それをみて、「Hello」を表示してみた、
ここまでは順調、eclipseのプラグインもあるのでたすかります。
■下記のようなソースを記述し、サーバにアップすると
googleアカウントのログインを呼び出し、user.getNickname()の部分で
アカウント名を呼び出す事が出来ます。
package guest1;
import java.io.IOException;
import javax.servlet.http.*;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
@SuppressWarnings("serial")
public class Guest1Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
if (user != null) {
resp.setContentType("text/plain");
resp.getWriter().println("Hello, " + user.getNickname());
} else {
resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
}
}
}
というか、googleBlog書いてるから当たり前かですね、
http://code.google.com/intl/ja/appengine/
からGoogle App Engineの登録を行う、
http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/
にスタート ガイド: Javaがあるので、
それをみて、「Hello」を表示してみた、
ここまでは順調、eclipseのプラグインもあるのでたすかります。
■下記のようなソースを記述し、サーバにアップすると
googleアカウントのログインを呼び出し、user.getNickname()の部分で
アカウント名を呼び出す事が出来ます。
「Hello, ●●●●●●」のように!!
package guest1;
import java.io.IOException;
import javax.servlet.http.*;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
@SuppressWarnings("serial")
public class Guest1Servlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
if (user != null) {
resp.setContentType("text/plain");
resp.getWriter().println("Hello, " + user.getNickname());
} else {
resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
}
}
}
2010年11月5日金曜日
GoogleMap 円を書く
new google.maps.Circle({
center: new google.maps.LatLng(lat, lng),
fillColor: '#ff0000', // 塗りつぶし色
fillOpacity: 0.1, // 塗りつぶし透過度(0: 透明 ⇔ 1:不透明)
map:mapObj,
radius: 5000,
strokeColor: '#ff0000', // 外周色
strokeOpacity: 1, // 外周透過度(0: 透明 ⇔ 1:不透明)
strokeWeight: 1 // 外周太さ(ピクセル)
});
center: new google.maps.LatLng(lat, lng),
fillColor: '#ff0000', // 塗りつぶし色
fillOpacity: 0.1, // 塗りつぶし透過度(0: 透明 ⇔ 1:不透明)
map:mapObj,
radius: 5000,
strokeColor: '#ff0000', // 外周色
strokeOpacity: 1, // 外周透過度(0: 透明 ⇔ 1:不透明)
strokeWeight: 1 // 外周太さ(ピクセル)
});
ジオコーディング
ジオコーディングとは、住所を地理的な座標に変換する処理のことで、あなたはマーカーの配置や地図の表示に利用することができます。
(例えば"東京都千代田区永田町1-7-1"は、緯度:35.6758907, 経度:139.7448603となります)
http://sites.google.com/site/gmapsapi3/Home/services#Waypoints
に詳しく説明がある見たいです。


(例えば"東京都千代田区永田町1-7-1"は、緯度:35.6758907, 経度:139.7448603となります)
http://sites.google.com/site/gmapsapi3/Home/services#Waypoints
に詳しく説明がある見たいです。


2010年11月4日木曜日
GoogleMapAPIを導入
まずは、手始めに
■オプション指定
mapTypeControl : true,//表示タイプ
scaleControl : true,//距離表示
navigationControl : true//+ーのズーム表示
disableDefaultUI : true,//デフォルトの指定を無効
<html> <head> <title>Hello world in Google Maps API version3</title> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> function initialize() { var centerPos = new google.maps.LatLng(35.658613, 139.745525); var mapOptions = { zoom : 18, center : centerPos, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); } </script> </head> <body onload="initialize()"> <div id="map_canvas" style="width:100%;height:100%"></div> </body> </html>
解説 ■上記の値をセンタにするvar centerPos = new google.maps.LatLng(35.658613, 139.745525);
■オプション指定
var mapOptions = {
mapTypeControl : true,//表示タイプ
scaleControl : true,//距離表示
navigationControl : true//+ーのズーム表示
disableDefaultUI : true,//デフォルトの指定を無効
2010年10月5日火曜日
Windows TOMCAT6 + MySql + eclipse 環境でデータソース
■前準備
①C:\Tomcat 6.0\libにmysql-connector-java-5.1.13-bin.jarをコピー
②eclipseの各プロジェクトからプロパティ⇒Javaビルドパス⇒外部JARの追加⇒mysql-connector-java-5.1.13-bin.jarを選択し追加⇒OK
■C:\Tomcat 6.0\conf\Catalina\localhost\Test.xmlのTest.xmlに下記のxmlを追加、
私の環境だとeclipseでプロジェクトを作った際、自動でファイルが出来ていますので
そこに追加
<Context path="/Test" reloadable="true" docBase="C:\eclipse\workspace\Test" workDir="C:\eclipse\workspace\Test\work" >//ここは各自違います!!
<Resource name="jdbc/tests"//データソース名
auth="Container"
type="javax.sql.DataSource"
username=""//sqlのユーザ名
password=""//sqlのパスワード名
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"//mysqlのURLとデータベースを記述、今回はtestデータベースを選択、
/>
</Context>
■Jspソースの記述、今回はeclipseのTestプロジェクトのデフォルトパッケージにjspを置いています。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/tests");//ここはxmlのResource nameと合わせて記述
%>
<% System.out.print(ds); %>//デバック用
<%
Connection conn= ds.getConnection();
Statement pstmt = conn.createStatement();
String sql = "SELECT * FROM ACCOUNT";
ResultSet rs = pstmt.executeQuery(sql);
while(rs.next()){ %>
<%=rs.getString("NAME")%><BR>
<%}
pstmt.close();
rs.close();
conn.close();
%>
①C:\Tomcat 6.0\libにmysql-connector-java-5.1.13-bin.jarをコピー
②eclipseの各プロジェクトからプロパティ⇒Javaビルドパス⇒外部JARの追加⇒mysql-connector-java-5.1.13-bin.jarを選択し追加⇒OK
■C:\Tomcat 6.0\conf\Catalina\localhost\Test.xmlのTest.xmlに下記のxmlを追加、
私の環境だとeclipseでプロジェクトを作った際、自動でファイルが出来ていますので
そこに追加
<Resource name="jdbc/tests"//データソース名
auth="Container"
type="javax.sql.DataSource"
username=""//sqlのユーザ名
password=""//sqlのパスワード名
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"//mysqlのURLとデータベースを記述、今回はtestデータベースを選択、
/>
</Context>
■Jspソースの記述、今回はeclipseのTestプロジェクトのデフォルトパッケージにjspを置いています。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/tests");//ここはxmlのResource nameと合わせて記述
%>
<% System.out.print(ds); %>//デバック用
<%
Connection conn= ds.getConnection();
Statement pstmt = conn.createStatement();
String sql = "SELECT * FROM ACCOUNT";
ResultSet rs = pstmt.executeQuery(sql);
while(rs.next()){ %>
<%=rs.getString("NAME")%><BR>
<%}
pstmt.close();
rs.close();
conn.close();
%>
2010年10月4日月曜日
ロック
クライアントが同時にアクセスし、2つの処理が同時に実行された場合に情報の整合
性が取れなくなるのを防ぐ処理方法、
select * from ACCOUNTS WHERE IP=1 FOR UPDATE//FOR UPDATEでロックを行い、コミットでロック解除を行う、
性が取れなくなるのを防ぐ処理方法、
select * from ACCOUNTS WHERE IP=1 FOR UPDATE//FOR UPDATEでロックを行い、コミットでロック解除を行う、
Myql トランザクションのオートコミットをOFF
Connection con = DBManager.getConnection();
con.setAutoCommit(false);//オートコミットをOFF
String sql = "UPDATE ACCOUNT " + "SET MONEYS=MONEY-1000 WHERE IP=1" ;
smt.executeUpdate(sql);
sql = "UPDATE ACCOUNT" + "SET MONEYS=MONEYS-1000 WHERE IP=10" ;
smt.executeUpdate(sql);
smt.cancel(); //上記の二つのクエリが処理出来たならコミットする
con.commit();
con.close();
con.setAutoCommit(false);//オートコミットをOFF
String sql = "UPDATE ACCOUNT " + "SET MONEYS=MONEY-1000 WHERE IP=1" ;
smt.executeUpdate(sql);
sql = "UPDATE ACCOUNT" + "SET MONEYS=MONEYS-1000 WHERE IP=10" ;
smt.executeUpdate(sql);
smt.cancel(); //上記の二つのクエリが処理出来たならコミットする
con.commit();
con.close();
2010年9月27日月曜日
Jsp/Servletのスコープ
■リクエストスコープの有効範囲は1つのリクエストが終わるまでの間です。
■セッションスコープは同じクライアント間が有効範囲です。
■アプリケーションスコープはWebアプリケーション内で有効です。リクエストやセッションが違っても有効です。また、アプリケーションコンテキストと呼ばれます。
■getAttribute(String name)での値はObjectで帰ってくるので、必要に応じてキャストを
行う、
■セッションIDとカウンター
package session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import sun.net.www.content.text.plain;
public class CounterServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
HttpSession session = request.getSession();//セッションの取得
Integer count = (Integer) session.getAttribute("count");//セッションかたcountの取得
if(count == null)//nullなら0を代入 {
count = new Integer(0);
}
count = new Integer(count.intValue() + 1);//カウントUP
session.setAttribute("count", count);//セッションに格納
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
pw.print("<p>sessionIdは" + session.getId() + "</p>");//セッションIDの取得
pw.print("<p>" + count + "</p>");//カウントの表示
}
}
■セッションスコープは同じクライアント間が有効範囲です。
■アプリケーションスコープはWebアプリケーション内で有効です。リクエストやセッションが違っても有効です。また、アプリケーションコンテキストと呼ばれます。
■getAttribute(String name)での値はObjectで帰ってくるので、必要に応じてキャストを
行う、
■セッションIDとカウンター
package session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import sun.net.www.content.text.plain;
public class CounterServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
HttpSession session = request.getSession();//セッションの取得
Integer count = (Integer) session.getAttribute("count");//セッションかたcountの取得
if(count == null)//nullなら0を代入 {
count = new Integer(0);
}
count = new Integer(count.intValue() + 1);//カウントUP
session.setAttribute("count", count);//セッションに格納
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
pw.print("<p>sessionIdは" + session.getId() + "</p>");//セッションIDの取得
pw.print("<p>" + count + "</p>");//カウントの表示
}
}
Jsp/Servletでフィルター処理
■フィルター処理
public class TestFilter implements Filter
{
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
{
request.setCharacterEncoding("Windows-31J");//文字コードの設定
response.setContentType("text/plain; charset=Windows-31J");//文字コードの設定
chain.doFilter(request,response);//次の処理に渡す
■XMLの記述
<filter>
<filter-name>TestFilter</filter-name>
<filter-class>filter.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/*</url-pattern>//すべてのファイルにフィルターを掛ける
</filter-mapping>
public class TestFilter implements Filter
{
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
{
request.setCharacterEncoding("Windows-31J");//文字コードの設定
response.setContentType("text/plain; charset=Windows-31J");//文字コードの設定
chain.doFilter(request,response);//次の処理に渡す
■XMLの記述
<filter>
<filter-name>TestFilter</filter-name>
<filter-class>filter.TestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/*</url-pattern>//すべてのファイルにフィルターを掛ける
</filter-mapping>
jsp/servletで入力値のチェック
■数値チェック,intに変換し数値で無い場合はキャッチで受け取る
int year = Integer.parseInt(yearStr);
catch (Exception e)
■emailの書式チェック
String pattern = "[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+";
if(text.matches(pattern))
{
マッチ処理
}
else{マッチしない処理}
int year = Integer.parseInt(yearStr);
catch (Exception e)
■emailの書式チェック
String pattern = "[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+";
if(text.matches(pattern))
{
マッチ処理
}
else{マッチしない処理}
2010年9月16日木曜日
JspとServletとJavaBeansの連携で分かった事
■■■■■■■■■■■サーブレットで大事な事■■■■■■■■■■■■■■
リクエストに渡すスコープ名request.setAttribute("cb",cb);とJsp部分でJavaBeansで受け取る
<jsp:useBean id="cb" class="mybeans.CarBean"の部分の名前は合わせておく、
public class Sample7 extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse respons)
throws ServletException
{
try
{
//GETで名前の受け取り
String tmp = request.getParameter("cars");
String names = new String(tmp.getBytes("8859_1"),"JISAutoDetect");
//BeansにCarの名前をセット
CarBean cb = new CarBean();
cb.setCarName(names);
cb.makecardata();
request.setAttribute("cb",cb);//この部分
リクエストに渡すスコープ名request.setAttribute("cb",cb);とJsp部分でJavaBeansで受け取る
<jsp:useBean id="cb" class="mybeans.CarBean"の部分の名前は合わせておく、
public class Sample7 extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse respons)
throws ServletException
{
try
{
//GETで名前の受け取り
String tmp = request.getParameter("cars");
String names = new String(tmp.getBytes("8859_1"),"JISAutoDetect");
//BeansにCarの名前をセット
CarBean cb = new CarBean();
cb.setCarName(names);
cb.makecardata();
request.setAttribute("cb",cb);//この部分
2010年9月14日火曜日
フィルター処理の記述、
■■■■■■■■■■■■サーブレット表示のソース■■■■■■■■■■■■■
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SampleFilter extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException
{
try
{
response.setContentType("text/html;charset=Windows-31J");
response.getWriter().println("<p>Servlet処理です</p>");
} catch (Exception e)
{
// TODO: handle exception
e.printStackTrace();
}
}
}
■■■■■■■■■■■■フィルター表示のソース■■■■■■■■■■■■■
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FilterSrc implements Filter
{
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
throws IOException,ServletException
{
try{
response.setContentType("text/html;charset=Windows-31J");
PrintWriter pw = response.getWriter();
pw.println("フィルタ処理");
chain.doFilter(request, response);
}catch (Exception e) {
// TODO: handle exception
}
}
public void init(FilterConfig filterConfig) {
// TODO 自動生成されたメソッド・スタブ
}
public void destroy() {
// TODO 自動生成されたメソッド・スタブ
}
}
■■■■■■■■■■■■web.xmlの記述■■■■■■■■■■■■■
<servlet>
<servlet-name>SampleFilter</servlet-name>
<servlet-class>SampleFilter</servlet-class>
</servlet>
<filter>
<filter-name>FilterSrc</filter-name>
<filter-class>FilterSrc</filter-class>
</filter>
<servlet-mapping>
<servlet-name>SampleFilter</servlet-name>
<url-pattern>/FilterSrc/SampleFilter</url-pattern>//ここをそろえておくことが味噌
</servlet-mapping>
<filter-mapping>
<filter-name>FilterSrc</filter-name>
<url-pattern>/FilterSrc/SampleFilter</url-pattern>//ここをそろえておくことが味噌
</filter-mapping>
■■■■■■■■■■■■■そのたポイント■■■■■■■■■■■■■■■■■■
①フィルターのソースのメソッドはdoFilter()です、その内部で処理を行いましょう、
FilterCainのdoFilter()メソッドの処理が終わると次の処理が行われます
②Filterを実装
③doFilterの引数はServletのリクエスト、レスポンス、FilterChainの3つ
④実装したFilterのinitやdesroyのメソッドも忘れずに
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SampleFilter extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException
{
try
{
response.setContentType("text/html;charset=Windows-31J");
response.getWriter().println("<p>Servlet処理です</p>");
} catch (Exception e)
{
// TODO: handle exception
e.printStackTrace();
}
}
}
■■■■■■■■■■■■フィルター表示のソース■■■■■■■■■■■■■
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FilterSrc implements Filter
{
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
throws IOException,ServletException
{
try{
response.setContentType("text/html;charset=Windows-31J");
PrintWriter pw = response.getWriter();
pw.println("フィルタ処理");
chain.doFilter(request, response);
}catch (Exception e) {
// TODO: handle exception
}
}
public void init(FilterConfig filterConfig) {
// TODO 自動生成されたメソッド・スタブ
}
public void destroy() {
// TODO 自動生成されたメソッド・スタブ
}
}
■■■■■■■■■■■■web.xmlの記述■■■■■■■■■■■■■
<servlet>
<servlet-name>SampleFilter</servlet-name>
<servlet-class>SampleFilter</servlet-class>
</servlet>
<filter>
<filter-name>FilterSrc</filter-name>
<filter-class>FilterSrc</filter-class>
</filter>
<servlet-mapping>
<servlet-name>SampleFilter</servlet-name>
<url-pattern>/FilterSrc/SampleFilter</url-pattern>//ここをそろえておくことが味噌
</servlet-mapping>
<filter-mapping>
<filter-name>FilterSrc</filter-name>
<url-pattern>/FilterSrc/SampleFilter</url-pattern>//ここをそろえておくことが味噌
</filter-mapping>
■■■■■■■■■■■■■そのたポイント■■■■■■■■■■■■■■■■■■
①フィルターのソースのメソッドはdoFilter()です、その内部で処理を行いましょう、
FilterCainのdoFilter()メソッドの処理が終わると次の処理が行われます
②Filterを実装
③doFilterの引数はServletのリクエスト、レスポンス、FilterChainの3つ
④実装したFilterのinitやdesroyのメソッドも忘れずに
コンテキストとは!!サーブに画面線維の注意点
アプリケーションサーバは各階層をコンテキストという単位で管理している、
コンテキストルートはJspでは
request.getContextPath()
で呼び出します。
requestはHttpServletRequestクラスの暗黙オブジェクトで、Jspではデフォルトで
使えます。
■■■■■getRequestDispatcherdeでサーブに画面線維の注意点■■■■■■■■■■■■
( RequestDispatcher rd = sc.getRequestDispatcher("/ExInclude2Servlet");
getRequestDispatcherdeを使ってサーブレットに画面線維をする場合は、
web.xmlに登録しておかなければいけません
■■■■■forwardメソッドとsendRedirectメソッドとの違い■■■■■
forwardは(独立しない)リクエスト処理
sendRedirect (独立した)リクエスト処理
コンテキストルートはJspでは
request.getContextPath()
で呼び出します。
requestはHttpServletRequestクラスの暗黙オブジェクトで、Jspではデフォルトで
使えます。
■■■■■getRequestDispatcherdeでサーブに画面線維の注意点■■■■■■■■■■■■
( RequestDispatcher rd = sc.getRequestDispatcher("/ExInclude2Servlet");
getRequestDispatcherdeを使ってサーブレットに画面線維をする場合は、
web.xmlに登録しておかなければいけません
■■■■■forwardメソッドとsendRedirectメソッドとの違い■■■■■
forwardは(独立しない)リクエスト処理
sendRedirect (独立した)リクエスト処理
2010年9月13日月曜日
ServletでHTMLと日本語を書き出し
■■■■■■■■HTMLを書き出す時■■■■■■■■■■
response.setContentType("text/html; charset=Windows-31 ");
はhtmlの書き出しと、エンコーディングを Windows-31で行います。
■■■■■■■■テキストを書き出す時■■■■■■■■■■
response.setContentType("text/plain; charset=Windows-31J");
★上記を書かないと
response.setContentType("text/html; charset=Windows-31 ");
はhtmlの書き出しと、エンコーディングを Windows-31で行います。
■■■■■■■■テキストを書き出す時■■■■■■■■■■
response.setContentType("text/plain; charset=Windows-31J");
★上記を書かないと
?????????
な感じになります
Jsp記述色々
■■■■■■変数宣言■■■■■■
<%! int i = 0; %>はJspが初めて呼び出された後、共有されます
<% i = i++; %>
ですので、iの変数はアクセスの間カウントUPされます。
■■■■■■サーブレットを作成はHttpServletを継承■■■■■■
サーブレットを作成する時は、HttpServletを継承します。
extends HttpServletと記述する
■■■■■■doGet()メソッド■■■■■■
HttpServletのオーバーライドメソッド、
ブラウザーがら リクエストで受け取り、レスポンス で返します、
■■■■■■例外処理■■■■■■
レスポンスの書き込みはIOExceptionでスローし、
他の例外処理は、ServletExceptionでラップてスローします。
例:
try
{
例外の発生がある処理
}
catch(SomeException e)
{
throw new ServletException(e);
}
■■■■■■web.xml■■■■■■
<web-app>
<servlet>
<servlet-name>TestServlet</servlet-name>//サーブレットの名前
<servlet-class>TestServlet</servlet-class>//サーブレットのクラス、パッケージがある
//場合はパッケージに合わせましょう
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>//サーブレットの名前
<url-pattern>/testservlet</url-pattern>//ブラウザからのurl
</servlet-mapping>
<web-app>
■■■■■■web.xmlのワイルドカード■■■■■■
/test/*
*.txtなどあります
<%! int i = 0; %>はJspが初めて呼び出された後、共有されます
<% i = i++; %>
ですので、iの変数はアクセスの間カウントUPされます。
■■■■■■サーブレットを作成はHttpServletを継承■■■■■■
サーブレットを作成する時は、HttpServletを継承します。
extends HttpServletと記述する
■■■■■■doGet()メソッド■■■■■■
HttpServletのオーバーライドメソッド、
ブラウザーがら リクエストで受け取り、レスポンス で返します、
■■■■■■例外処理■■■■■■
レスポンスの書き込みはIOExceptionでスローし、
他の例外処理は、ServletExceptionでラップてスローします。
例:
try
{
例外の発生がある処理
}
catch(SomeException e)
{
throw new ServletException(e);
}
■■■■■■web.xml■■■■■■
<web-app>
<servlet>
<servlet-name>TestServlet</servlet-name>//サーブレットの名前
<servlet-class>TestServlet</servlet-class>//サーブレットのクラス、パッケージがある
//場合はパッケージに合わせましょう
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>//サーブレットの名前
<url-pattern>/testservlet</url-pattern>//ブラウザからのurl
</servlet-mapping>
<web-app>
■■■■■■web.xmlのワイルドカード■■■■■■
/test/*
*.txtなどあります
Jspで配列中の名前表示
■■■■■■■■■■■jspで配列中の名前表示ソース■■■■■■■■■■■■■
<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
</head>
<body>
<%
String []names = {"大田","川崎","永浦","西橋"};
int i;
int count = names.length;
for(i = 0; i < count; i++)
{
out.println(names[i]);
}
%>
</body>
</html>
★★★★★★★★実行結果★★★★★★★★
大田 川崎 永浦 西橋
★★★★★eclipse画面★★★★
★★★★★表示URL★★★★
http://localhost:8080/Jsp10_1_1/p_intro.jsp
<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
</head>
<body>
<%
String []names = {"大田","川崎","永浦","西橋"};
int i;
int count = names.length;
for(i = 0; i < count; i++)
{
out.println(names[i]);
}
%>
</body>
</html>
★★★★★★★★実行結果★★★★★★★★
大田 川崎 永浦 西橋
★★★★★eclipse画面★★★★
★★★★★表示URL★★★★
http://localhost:8080/Jsp10_1_1/p_intro.jsp
登録:
投稿 (Atom)