Verification Of SQL destils on a servlet page

Hi,
I am just wondering if anyone can help me with my litle problem, I need to read avalue from a database and display it on the servlet page, but the name has to be verified, something like:
SELECT acbalance FROM actable WHERE acname = user
I am wondering if I could read thevariable "user" from the session and verify it that way?
If so, how do I do this?
Or does anyone else have a better idea how I can do this?
Any help greatly appreciated,
Aidan.

More simply you can use a PreparedStatement: SELECT acbalance FROM actable WHERE acname = ?... then, at each call, just use pstatement.setString(1, user)

Similar Messages

  • How to use Oracle Procedures with Servlet page

    Hi all
    I'm working on Servlet pages and I need to insert and select some records from Oracle database but it has to be done by calling some already written Procedures. I've never really used them before so I'm little lost. I know where the queries are used it'll be Procedures but what is the syntax for it.Can anyone put me in right direction please.
    Thanks

    Just google it. You will find lots of examples. Here are some :
    [http://java.sun.com/docs/books/tutorial/jdbc/basics/sql.html|http://java.sun.com/docs/books/tutorial/jdbc/basics/sql.html]
    [http://onjava.com/pub/a/onjava/2003/08/13/stored_procedures.html|http://onjava.com/pub/a/onjava/2003/08/13/stored_procedures.html]

  • R/3 connection from servlet page

    Helllo,
    I have implemented a servlet page from SAP NetWever Developer Studio:
      1 - J2EE -> Web Module Project for the development
      2 - J2EE -> Enterprise Application Project (EAR) for the deploy
    Now I need to access to the R/3 system. It is possible connect to R/3 system from a servlet page? In the portal already exists a system connection created under the section "Syatem Administration -> System Configuration" but I'm trying to implement the connection unsuccessfully (following the Java code used into the servlet):
    String sapSystem = "MNT";
    IUserAccount uacc = UMFactory.getUserAccountFactory().getUserAccountByLogonId("Administrator");
    IUserAccount iuacc = UMFactory.getUserAccountFactory().getMutableUserAccount(uacc.getUniqueID());
    IUser user = iuacc.getAssignedUser();
    IConnection connection = null;
    // get the Connector Gateway Service
    IPortalComponentRequest req = (IPortalComponentRequest) request;           => HERE Casting error
    Object connectorservice = PortalRuntime.getRuntimeResources().getService(IConnectorService.KEY);
    IConnectorGatewayService cgService = (IConnectorGatewayService) connectorservice;
    ConnectionProperties cp = new ConnectionProperties(user.getLocale(), user);
    connection = cgService.getConnection(sapSystem, req);
    String res = "", name = "", path = "";
    // Get the Interaction interface for executing the command
    IInteraction ix = connection.createInteractionEx();
    // Get interaction spec and set the name of the command to run
    IInteractionSpec ixspec = ix.getInteractionSpec();
    String functionName = "Z_R3_FUNCTION";
    // Put Function Name into interaction Properties.
    ixspec.setPropertyValue("Name", functionName);
    // return structure - parametro di export della funzione
    String function_out = "P_PAR";
    String function_in_value = "VALUE";
    RecordFactory rf = ix.getRecordFactory();
    MappedRecord input = rf.createMappedRecord("input");
    // put function input parameters
    input.put("P_KUNNR", function_in_value);
    MappedRecord output = (MappedRecord) ix.execute(ixspec, input);
    connection.close();
    Object result = output.get(function_out);
    Anybody knows how implement it?
    Thanks and best regards,
    Matteo.

    Hello Marcos,
    I have followed the example shown in your link, I have found all JAR file, the Java code has not error, I hace deployed my project, but the server returns the error:
    java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
    JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [no sapjcorfc in java.library.path]. java.library.path [/opt/java1.4/jre/lib/IA64W:/opt/java1.4/jre/lib/IA64W/server:/opt/java1.4/jre/../lib/IA64W:/usr/sap/PCT/JC00/j2ee/os_libs::/usr/sap/PCT/JC00/j2ee/os_libs:/usr/sap/PCT/SYS/exe/run:/usr/sap/PCT/SYS/exe/run:/usr/sap/PCT/SYS/exe/run:/oracle/PCT/sapdata4/SP24/LOGS/J2EE/sapinst_exe.252.1243940833:/usr/lib:/usr/sap/PCT/JC00/j2ee/os_libs:/usr/sap/PCT/JC00/j2ee/os_libs:]
    I have notice that into the folder "C:\Program Files\SAP\JDT\eclipse\plugins\com.sap.mw.jco\lib" there is the file sapjcorfc.dll
    Do you know if I have to put JAR into a particular folder into my project, or I have to do some configuration on the server?
    Thanks and best regards,
    Matteo

  • Using SQL Transactions in a JSF page

    Hi,
    I have got a problem implementing SQL Transactions into a JSF page.
    Here is my problem:
    I have go an object named "database" which contains the connection and the necessary method to launch queries, connection,...
    the database object is instantiated in the constructor of the page.
    I will name as "the process", this :
    database.connectTo(); //the instantiation of the connection
    database.connection.setAutoCommit(false);
    database.executeNonQuery("any insertion query");
    database.executeNonQuery("any insertion query2");
    database.executeNonQuery("any insertion query3");
    database.executeNonQuery("COMMIT");
    (As you can see, it's just a preliminary test, the rollback is not tested yet)
    If I put the entire process in a single method, everything works fine.
    If I split the queries and the commit query, the commit is not launched because the connection of my object "database" is null. I mean by "splitting", the launch of the 3 insertion queries is in a method (of a button for example) and the launch of the commit query is in another method (another button).
    It appears that the attribute connection is set to null after the launch of the three queries...
    Moreover, nothing is inserted in the database (this logical since the commit is not launched).
    Has anyone a clue?

    Your database transaction should not span two buttons. The two buttons will be called on separate requests -- that is, separate calls to the server -- and you'll have a database connection dangling out there, potentially locking other people out of certain tables/rows until the user clicks the right button.
    Note also that there is a commit() method in the JDBC API.
    You might want to spend some time studying some example applications.

  • ERROR: Updatable SQL Query already exists on page 20.

    Hello,
    I created a tabular form, then added a where clause and started getting the following error:
    Error in mru internal routine: ORA-20001: no data found in tabular form
    So I deleted all components of the tabular form (region, buttons, branches and process) and started building it again from scratch. This is a strategy that has worked for me a number of times in HTML DB. Unfortunately now I get the following error when trying to build a new tabular form:
    Updatable SQL Query already exists on page 20.You can only add one updatable SQL query per page. Select a different page.
    What is the logic that throws this error. I'm 99% convinced I've cleared the page of any updatable SQL, is there something on the application level I should also clear out?
    Thanks!

    Ignore this, problem solved. It seems I do have SQL reports that are marked as updatable even though they are just plain reports.
    Sorry.

  • How to find the backend  SQL query of the JSP page in OIC

    Does anybody how the best way to find the backend SQL QUERY of OIV JSP page?

    How To Generate Trace Files in in HTML/JSP (using Profile Option)
    •     • Note: This requires proper responsibility to set SQL Initialization statement using Profile option.      
         Step 1.     Login to the desired Form application.     
         Step 2.     Select +Profile >> System ('Find System Profile Values' screen will pop up)     
         Step 3.     Check 'User' and Type in the Username (in which the account for that user will be trace)     
         Step 4.     Type 'Initialization%' in the Profile box and Hit 'Find' (Click here for preview.)     
         Step 5.     In the User box, type the following statement and Hit 'Save' (Click here for preview)
         BEGIN FND_CTL.FND_SESS_CTL('','','TRUE','TRUE','','ALTER SESSION SET TRACEFILE_IDENTIFIER = TESTING MAX_DUMP_FILE_SIZE = 5000000 EVENTS ='||''''||' 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12'||'''');END;     
         Note:     specify any name you like to identify your trace, in this case, testing is the end name on the trace. You can also specify the amount of data allowable to be in the trace, in this case, 5000000 is the amount set. Make sure you hit 'Save' afterwards.[Quotes in the statement are all 'Single' quotes.]
              specifying TRACEFILE_IDENTIFIER value is mandatory when setting up the trace using the above profile option value
         Step 6.     Login to HTML / JSP page with username/password and start your flow. (Everything you do once login to HTML / JSP will get trace.)     
         Step 7.     Logout of HTML / JSP application once you completed with your flow.      
         Step 8.     Go back to the Profile option in the Form application and delete the Initialization SQL statement, and Hit 'Save'.     
         Step 9.     Log in to the database server or login server and retrieve your trace file.
         Identify and retrieve the trace file using the tracefile_identifier specified in Step 5.
         In this case the tracefile_identifier is “TESTING”. (Click here for Trace file locations) *     
         Note:     If you need to regenerate your trace or tracing a new flow, then repeat Step 1 to Step 8. To avoid self-confusion, choose a different name for your trace identifier everytime you set to trace.     
         Step 10.     See TKPROF section on how to format trace file into readable text.
         Trace Options Definition
         No Trace          Tracing is not activated
         Activities will not get traced.
         Regular Trace
         (Level 1)          Contains SQL, execution statistics, and execution plan.
         Provides execution path, row counts as well as produces smallest flat file.
         Trace with Binds
         (Level 4)          Regular Trace plus value supplied to SQL statement via local variables.
         Trace with Waits
         (Level 8)          Regular Trace plus database operation timings that the SQL waited to have done in order to complete, i.e. disk access.
         Trace with Binds and Waits
         (Level 12)          Regular trace with both waits and binds information.
         Contains the most complete information and will produce the largest trace file.
    ****Send me an email to [email protected],I will share the document with you.

  • Oracle XSQL Servlet Page Processor 0.9.9.1 (Technology Preview)

    I trying XSQL Servlet in oracle8.1.6,Java Web Server.
    When I access http://localhost:8080/xsql/index.html
    I am getting this error.
    "Oracle XSQL Servlet Page Processor 0.9.9.1 (Technology Preview)
    XSQL-013: XSQL Page URI is null or has an invalid format."
    Any suggestion....
    null

    JWS is not one of the supported Servlet Engines in 1.0.0.0 please see the release notes for supported engines (there are lots of them).
    The XSQL 1.0.1.0 release will support and
    additional set of engines that cause XSQL-013 errors becuase the return null for
    the Servlet API call:
    req.getRealPath(req.getServletPath());

  • Java Servlet page not opening error 404

    Hi!
    I am working with servlets. I compiled the java file and the class file is been moved to
    c:\javawebserver2.0\servlets, and the html files moved to public_html. Html files r opening
    the classpath is mapped to jsdk.jar i.e
    set CLASSPATH=c:\javawebserver2.0\lib\jsdk.jar
    Built-in samples r working without any problem
    when i try to run the servlet
    Page Not Found error 404 occuring
    Please do the favour for me
    thanks

    404 Not Found means you didn't deploy the app properly.
    I think deploying an app like this is a terrible idea. If you have more than one app deployed on a production web server/servlet engine, you wouldn't want to put them all in the same place. "public_html" and the generic "servlets" directory shouldn't be used as dumping grounds for all your apps.
    Learn how to deploy using a WAR file. It'll keep all your apps separate and their constitutive parts together.
    Why Java Web Server? I don't think anyone uses it seriously anymore. Tomcat is the reference implementation of the servlet/JSP specs. I'd download that and use it instead of JWS. JMO, of course.

  • XML SQL Utility or XSQL Servlet ?

    Hi,
    I am trying to generate a well formed XML file by querring from oracle8i database and also include different XSL files to render different output styles.
    Should I use XML SQL Utility or XSQL Servlets ??
    From the documentation I see that both XML SQL utility and XSQL servlets will do the job(am I right ?). But I am sure which one I should be using.
    Can any one advice me on this ?
    Thanks.
    Kane

    "HI u have to use XML SQl utility to run ur SQL and ur sqlservelet to process and get the output in the browser"
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Kane:
    Hi,
    I am trying to generate a well formed XML file by querring from oracle8i database and also include different XSL files to render different output styles.
    Should I use XML SQL Utility or XSQL Servlets ??
    From the documentation I see that both XML SQL utility and XSQL servlets will do the job(am I right ?). But I am sure which one I should be using.
    Can any one advice me on this ?
    Thanks.
    Kane<HR></BLOCKQUOTE>
    null

  • Restoring of HREF on same servlet page

    hi,
    i have a servlet page that generating number of hyperlink in form of menu. on clicking any HREF control goes to other page.
    till now everything is fine, but i want to display most recent used top 10 HREF on servlet page without affecting the functionality.
    Pls help me.

    How about counting the clicks in static variables?
    Let's assume this:
    interface HrfClicks{
           public static int HRF1_CLICKED = 0;
           public static int HRF2_CLICKED = 0;
    public class TestServlet extends HttpServlet {
             public void doGet(HttpServletRequest request, HttpServletResponse){
                        HrfClicks.HRF1_CLICKED++;
                       //display the top ten links....etc.
    }Is that what you want?
    regards....
    Message was edited by:
    n3bul4

  • MS Access & MS SQL from a Java Server Page

    I'm new to JSP but I know how to write Active Server Pages and was wondering how to set up a JSP so that I can access data in my MS Access database and also my MS SQL server.
    Anyone have code snippets that connect to these two databases, retrieve and update data in a table?
    Also, what's the easiest way to deploy a JSP page, I've got J2EE, JDK, Tomcat, Apache installed not sure how to just deploy a JSP page so I can test it.
    Thanks in advance,
    dez

    the above connection example is ok, to deploy the jsp first you need of course
    Apache with some servlet container such Tomcat or Resin or JServ...
    For Tomcat there should be an folder in server root where the static pages are to be put
    (as htdocs in apache for example) for every application, and usually is webapps and in this folder
    you put another folder that will contain all of your stuff. In this folder, let say is named myapp, you
    can put the jsp's and html's. Yes you can simply put it there but for the jsp to work you need in
    this folder another one named WEB-INF that must have an xml file named web.xml where you must
    set up a lot of stuff for your web-application, you can for test just to copy it from
    wbapps\examples\WEB-INF\web.xml and
    delete everything between <web-app></web-app>. Then start or restart your web server and if the
    jsp is in webapps\myapp and it is named test.jsp then type in your browser:
    http://127.0.0.1:8080/myapp/test.jsp.
    Another thing: for the connection to work of course the connection parameters should be ok and the
    database connection driver should be put in the tomcats classes classpath.
    Just put it in webapps\myapp\WEB-INF\classes... where ... is of course the package folders.
    Hope I'd helped you a little bit.
    whiteadi

  • Can someone help me correct this sql statement in a jsp page?

    ive been getting the java.sql.SQLException: Incorrect syntax error for one of my sql nested statements. i cant seem to find similar egs online, so reckon if anyone here could help, really appreciate it.
    as im putting the nested sql in jsp page, it has to be with lots of " " n crap. very confusing if there are nested.
    heres the sql statement without those "" that i want to use:
    select top 5 * from(
    select top+"'"+offset+"'"+" * from prod where cat=" +"'" cat "'"+"
    )order by prodID desc
    when i put this in my jsp pg, i had to add "" to become:
    String sql = "select top 5 * from("+"select top"+"'"+offset+"'"+" * from prod where cat=" +"'" +cat+ "'"+")order by prodID desc";cat=" +"'" cat "'"+")order by prodID desc";
    all those "" are confusing me to no end, so i cant figure out what should be the correct syntax. the error says the syntax error is near the offset.

    If offset is, say, 10, and cat is, say, "new", then it looks like you're going to produce the SQL:
    select top 5 * from(
      select top '10' * from prod where cat='new'
    )order by prodID descThat looks exactly like incorrect syntax to me... top almost certainly can't handle a string literal as its operand... you almost certainly would want "top 10" instead of "top '10'"...
    If you use PreparedStatement, you don't have to remember what you quote and what you don't and you can have your SQL in a single static final string to boot...

  • DBMS_OUTPUT.PUT_LINE multi records from PL/SQL procedure to Java web page.

    Hello
    I will explain the scenario:
    In our java web page, we are using three text boxes to enter "Part number,Description and Aircraft type". Every time the user no need to enter all these data. The person can enter any combination of data or only one text box. Actually the output data corresponding to this input entries is from five Oracle table. If we are using a single query to take data from all the five tables, the database will hang. So I written a procedure "SEARCH1",this will accept any combination of values (for empty values we need to pass NULL to this procedure) and output data from all the five tables. When I executing this procedure in SQL editor, the execution is very fast and giving exact result. I used "dbms_output.put_line" clause for outputing multiple records in my procedure. The output variables are "Serial No, part Number, Description, Aircraft type,Part No1,Part No2,Part No3,Part No4". I want to use the same procedure "SEARCH1" for outputing data in java web page.The passing argument I can take from the text box provided in java web page. I am using jdbc thin driver to connect our java web page to Oracle 9i database.
    Note1 : If any combination of search item not available, in procedure itself I am outputing a message like "Part Number not found". Here I am using four words ("Part" is the first word,"Number" is the second,"Not" s the third, and "found" is the fourth) for outputing this message.Is it necessary to equalise number of words I am using here to the record outputing eight variable?
    Our current development work is stopped because of this issue. So any one familier in this field,plese help me to solve our issue by giving the sample code for the same scenario.
    My Email-id is : [email protected]
    I will expect yor early mail.
    With thanks
    Pramod kumar.

    Hello Avi,
    I am trying to solve this issue by using objects. But the following part of code also throwing some warning like "PLS-00302: component must be declared". Plese cross check my code and help me to solve this issue.
    drop type rectab;
    create or replace type rectype as object(PartNo varchar2(30),Description varchar2(150),AIrcraft_type varchar2(15),status_IPC varchar2(30),status_ELOG varchar2(30),status_SUPCAT varchar2(30),status_AIRODWH varchar2(30));
    create or replace type rectab as table of rectype;
    create or replace package ioStructArray as
    procedure testsch2(pno in varchar2,pdes in varchar2,air in varchar2,orec in out rectab);
    end ioStructArray;
    create or replace package body ioStructArray as
    procedure testsch2(pno in varchar2,pdes in varchar2,air in varchar2,orec in out rectab) is
    mdescription varchar2(150);
    mpartnum varchar2(30);
    mpno varchar2(30);
    mdes varchar2(150);
    mair varchar2(15);
    mstat varchar2(1);
    cursor c1 is select partnum,description,aircraft_type from master_catalog where partnum=mpno and aircraft_type=mair and description like ltrim(rtrim(mdes))||'%';
    cursor c2 is select partnum from ipc_master where partnum=mpartnum;
    cursor c3 is select partnum from fedlog_data where partnum=mpartnum;
    cursor c4 is select partnum from superparts where partnum=mpartnum;
    cursor c5 is select part_no from supplier_catalog where part_no=mpartnum;
    mpno1 varchar2(30);
    mpno2 varchar2(30);
    mpno3 varchar2(30);
    mpno4 varchar2(30);
    mpno5 varchar2(30);
    maircraft_type varchar2(15);
    mstat1 varchar2(30);
    mstat2 varchar2(30);
    mstat3 varchar2(30);
    mstat4 varchar2(30);
    begin
    mstat:='N';
    mpno:=pno;
    mdes:=pdes;
    mair:=air;
    if mpno is not null and mdes is not null and mair is not null then
    begin
    mstat:='N';
    mpno:=pno;
    mdes:=pdes;
    mair:=air;
    for i in c1 loop
    mstat:='N';
    mstat1:='N';
    mstat2:='N';
    mstat3:='N';
    mstat4:='N';
    mpno1:=i.partnum;
    mpartnum:=i.partnum;
    mdescription:=i.description;
    maircraft_type:=i.aircraft_type;
    for j in c2 loop
    mpno2:=j.partnum;
    end loop;
    for k in c3 loop
    mpno3:=k.partnum;
    end loop;
    for l in c4 loop
    mpno4:=l.partnum;
    end loop;
    for m in c5 loop
    mpno5:=m.part_no;
    end loop;
    if mpno2=mpartnum then
    mstat1:=mpno2;
    end if;
    if mpno3=mpartnum then
    mstat2:=mpno3;
    end if;
    if mpno4=mpartnum then
    mstat3:=mpno4;
    end if;
    if mpno5=mpartnum then
    mstat4:=mpno5;
    end if;
    if mpno1=mpartnum then
    mstat:='Y';
    orec.PartNo:=mpno1;
    orec.Description:=mdescription;
    orec.AIrcraft_type:=maircraft_type;
    orec.status_IPC:=mstat1;
    orec.status_ELOG:=mstat2;
    orec.status_SUPCAT:=mstat3;
    orec.STATUS_AIRODWH:=status_AIRODWH;
    end if;
    end loop;
    end;
    end if;
    end testsch2;
    end ioStructArray;
    Expecting your early reply.
    With thanks
    Pramod kumar.

  • Run Report from PL/SQL with branch to different page

    I have an application in which, at various points, I run a PL/SQL procedure to perform an action, and then need to run a report while also navigating away from the current page. The actions are executed on a button click.
    I have tried various method, but for the life of me cannot get the system to do both things (ie. run the report and branch to another page). I have tried putting in a branch to page 0 (to execute after processing on the button click), with a request line to print the report, followed by a branch to the other page (also to execute after processing on the button click) - and only the branch to page 0 actually executes. Also tried putting a branch to the other page only, with the print request in the Request parameter - but only runs the report, does not branch to the other page.
    I have also tried to put the call to run the report into the PL/SQL code, using utl_http.start_request(url), but that came up with a "Bad Request" error. Also tried using the owa_util.redirect_url call, but also no luck.
    I am pulling my hair out at the moment, mainly because I am under pressure to deliver the system in very short time.
    Any suggestions would be appreciated.

    You can run Report queries from their URL ( f?p=&APP_ID.:0:&SESSION.:PRINT_REPORT=<REPORT NAME>)
    So an approach would be to
    On Button click, call a JS function that
    <li>1. uses Ondemand/Callback process to do the workflow processing(check box selection records)
    <li>2. opens the Report as a popup window(from your IR page)
    <li>3. Redirect away from the IR page to another page?
    Another approach:
    <li>1. IR report submits the page
    <li>2. In the PLSQL block you do the processing
    <li>3. The branch redirects to a URL which would point to the Report URL.
    OR
    <li>3. Have an onload JS which runs only when the request was the BUTTON request and that opens up a page which points to the report.
    Yet another way would be to use htp.p within the PLSQL block that does the workflow processing
    So your PLSQL code would be
    BEGIN
      --Do the workflow processing here
      --End workflow processing
      htp.p('<script>');
      htp.p(' window.open("f?p=&APP_ID.:0:&SESSION.:PRINT_REPORT=<REPORT NAME>"'); --opens up the PDF report
      htp.p(' window.location.href= "f?p=&APP_ID.:<page number>:&SESSION."');  --to redirect to new page
      htp.p('</script>');
    END;

  • PL/SQL vs JSP vs Servlets

    We are in the stage of deciding which language to develop portlets. I lean towards JSP or servlets for the wide array of Java libraries we can use. I think the only advantage of PL/SQL is speed. Thanks.

    It depends. If your developers are mainly Java developers, you'll probably prefer building web portlets. But if you have a strong PL/SQL skill set you could choose the latter. Additionally, if you're developing content that is database intensive you may want to build PL/SQL portlets since they transact with the database faster. If you're going to aggregate content from various web sites, using web providers is preferable. It's a matter of choice based on your requirements and preferences.

Maybe you are looking for

  • Silly Question Regarding : Media browser

    Hello, I am sure it something simple, but I am stuck and I have done 3 hrs of searching, restarts and Preference kills. • Share previews with iLife and iWork is checked in Aperture • Aperture icon doesn't show up in the media browser Any ideas? Thank

  • Separate PO terms and conditions in different scenarios

    Hello, We're on 12.1.3 and currently do not attach terms and conditions to our purchase orders when they are emailed to suppliers. However our circumstances are changing and our new management would like to be able to attach DIFFERENT terms and condi

  • Force User to Change Password with Shared Services authentication

    Hi Everybody, is there a way to set a property that user needs to change his password when he connect's the first time to web analysis? Version is 9.3 Thank you very much in advance. Best Regards //nois

  • Is UDS  installation is must to connect MII to OSIsoft PI

    Hello all  1.  Is UDS  installation is must to connect MII to OSIsoft PI. 2.  Is there any alternative method to connect to OSIsoft PI  with out  UDS server. Regards Rajendra

  • Pet Eye fix, by Sue Chastain

    There is always a question of how to fix pet eye reflections, and there are lots of ways. But here is one by Sue Chastain that is really quick and easy, http://graphicssoft.about.com/od/redeyeremoval/ss/peteye.htm Her photos and examples are great, a