■リクエストスコープの有効範囲は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>");//カウントの表示
}
}
2010年9月27日月曜日
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
2010年9月1日水曜日
JPanel
コンテナにパネルを追加してボタンを追加、
■
JButton jb1 = new JButton();
JButton jb2 = new JButton();
setLayout(new GridLayout(2,1)); //コンテナにグリッドを作成
Jpanel jp1 = new JPanel();//パネルの作成
Jpanel jp2 = new JPanel();
jp1.add(ボタンオブジェクト);//パネルにボタンの追加
jp2.add(ボタンオブジェクト);
add.(jp1);//コンテナにパネルを追加
add.(jp2);
■
JButton jb1 = new JButton();
JButton jb2 = new JButton();
setLayout(new GridLayout(2,1)); //コンテナにグリッドを作成
Jpanel jp1 = new JPanel();//パネルの作成
Jpanel jp2 = new JPanel();
jp1.add(ボタンオブジェクト);//パネルにボタンの追加
jp2.add(ボタンオブジェクト);
add.(jp1);//コンテナにパネルを追加
add.(jp2);
登録:
投稿 (Atom)