Avatar billede juliemusen Nybegynder
03. marts 2012 - 19:13 Der er 43 kommentarer og
1 løsning

list af andre sider

Hej.

Jeg skal have lavet en liste ligesom denne:


http://services.brics.dk/java4/webtek-client/welcome.jsp

som skal afhænge af dette xsd:

<element name="shop" type="w:shop"/><complexType name="shop"><all><element ref="w:shopID"/><element ref="w:shopName"/><element ref="w:shopURL"/></all></complexType>

Det vil sige hver gang der bliver tilføjet en shop til cloudén, så bliver listen opdateret. Har i en fornemmelse af hvordan jeg kan gøre det?
Avatar billede juliemusen Nybegynder
03. marts 2012 - 19:25 #1
Skrevet lidt pænere :-) :

<element name="shop" type="w:shop"/>
  <complexType name="shop">
    <all>
      <element ref="w:shopID"/>
      <element ref="w:shopName"/>
      <element ref="w:shopURL"/>
    </all>
  </complexType>

det skal være via en get metode. fx listofxxx.

Håber i har nogle eksempler eller metoder til at gøre det?

vh Julie
Avatar billede arne_v Ekspert
03. marts 2012 - 20:35 #2
Split opgaven op!

1) lav en data klasse X med de 3 properties

2) lav en metode a som henter XML fra web service

3) lav en metode b som kalder a, parser XML og laver en ArrayList<X>

4) lav en JSP foobar som kan vise en ArrayList<X>

5) lad den rigtige JSP side kald metode b og vise indholde ligesom foobar
Avatar billede arne_v Ekspert
03. marts 2012 - 20:37 #3
re 1)

meget simpelt

re 2)

ligesom login

re 3)

grundliggende bare en XML parsning

re 4)

nemt med JSTL men ogsaa muligt med <%  %> blokke
Avatar billede arne_v Ekspert
03. marts 2012 - 20:42 #4
re re 4)

nogle eksempler

old style:


<%@ page import="java.util.*" %>
<%!
// test only - this class would be in its own bean for a real case
public class Data {
    private int f1;
    private String f2;
    public Data(int f1, String f2) {
        this.f1 = f1;
        this.f2 = f2;
    }
    public int getF1() {
        return f1;
    }
    public void setF1(int f1) {
        this.f1 = f1;
    }
    public String getF2() {
        return f2;
    }
    public void setF2(String f2) {
        this.f2 = f2;
    }
}
%>
<%
// test only - these data would be loaded from a database for a real case
List lst = new ArrayList();
lst.add(new Data(1, "A"));
lst.add(new Data(2, "BB"));
lst.add(new Data(3, "CCC"));
%>
<!-- This is what we want to show: -->
<table border="1">
<tr>
<th>F1</th>
<th>F2</th>
</tr>
<%
for(int i = 0; i < lst.size(); i++) {
%>
<tr>
<td><%=((Data)lst.get(i)).getF1()%></td>
<td><%=((Data)lst.get(i)).getF2()%></td>
</tr>
<%
}
%>
</table>


new style:


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.*" %>
<%!
// test only - this class would be in its own bean for a real case
public class Data {
    private int f1;
    private String f2;
    public Data(int f1, String f2) {
        this.f1 = f1;
        this.f2 = f2;
    }
    public int getF1() {
        return f1;
    }
    public void setF1(int f1) {
        this.f1 = f1;
    }
    public String getF2() {
        return f2;
    }
    public void setF2(String f2) {
        this.f2 = f2;
    }
}
%>
<%
// test only - these data would be loaded from a database for a real case
List lst = new ArrayList();
lst.add(new Data(1, "A"));
lst.add(new Data(2, "BB"));
lst.add(new Data(3, "CCC"));
request.setAttribute("lst", lst);
%>
<!-- This is what we want to show: -->
<table border="1">
<tr>
<th>F1</th>
<th>F2</th>
</tr>
<c:forEach var="o" items="${lst}">
<tr>
<td>${o.f1}</td>
<td>${o.f2}</td>
</tr>
</c:forEach>
</table>


PS: Der boer selvfoelgelig bruges generics idag.
Avatar billede arne_v Ekspert
03. marts 2012 - 20:44 #5
re re 3)

noget a la:

        ArrayList<Data> result = new ArrayList<Data>();
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse( ****noget**** );
        NodeList elements = doc.getElementsByTagName("foobar");
        for (int i = 0; i < elements.getLength(); i++) {
            Node element = elements.item(i);
            result.add(new Data(element.getFirstChild().getNodeValue()));
        }
Avatar billede juliemusen Nybegynder
03. marts 2012 - 20:48 #6
1: Er det noget ala :


public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        //Create SAXbuilder and set response type.
        SAXBuilder builder = new SAXBuilder();
        response.setContentType("text/html");
       
        // Create variables for inputs.
        String shopKey = "XXXXX";
        String itemName= request.getParameter("w:shopID");
                String itemName=request.getParameter("w:shopName");
                String itemName= request.getParameter("w:shopURL");

        try
        {

            // Open the connection with a timeout and prepare to POST to cloud/createCustomer.
            URL url = new URL("http://services.brics.dk/java4/cloud/createItem");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setConnectTimeout(15000);
            con.setRequestMethod("GET");
            con.setDoInput(true);
            con.setDoOutput(true);
           
            // build xml-string to send to cloud.
            String xmlRequest = "<?xml version=\"1.0\"
Avatar billede juliemusen Nybegynder
03. marts 2012 - 20:48 #7
hov undskyld havde ikke set du havde skrevet alt det andet. Læser lige dette først :-)
Avatar billede juliemusen Nybegynder
03. marts 2012 - 20:57 #8
re 1:

Jeg vil egentligt mene at det skulle være tæt på det jeg har skrevet ovenover:

String itemName= request.getParameter("w:shopID");
                String itemName=request.getParameter("w:shopName");
                String itemName= request.getParameter("w:shopURL");

?
Avatar billede juliemusen Nybegynder
03. marts 2012 - 21:29 #9
re 1. Sådan her tror jeg det er:

package cs.au.wtek.shop;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class listShops
*/
@WebServlet("/listShops")
public class listShops extends HttpServlet {
    private static final long serialVersionUID = 1L;
     
    /**
    * @see HttpServlet#HttpServlet()
    */
    public listShops() {
        super();
            private int shopID;
            private String shopName,shopURL;
           
            public listShops(int shopID, String shopName,shopURL) {
                this.shopID = shopID;
                this.shopName = shopName;
                this.shopURL = shopURL;
    }

    public int getshopID()    {
        return shopID;
    }
   
    public String getName(String shopName)    {
        return shopName;
    }
   
    public String getURL(String shopURL)    {
        return shopURL;
    }
}
   

?
Avatar billede arne_v Ekspert
03. marts 2012 - 21:49 #10
data klassen skal ikke vaere er servlet bare en helt normal klasse
Avatar billede juliemusen Nybegynder
03. marts 2012 - 22:06 #11
ups, har lavet en "lille" brøler. Det er dette xsd schema istedet for:

element name="shops" type="w:shops"/>
  <complexType name="shops">
    <sequence minOccurs="0" maxOccurs="unbounded">
      <element ref="w:shop"/>
    </sequence>
  </complexType>

Sådan som jeg tror indtil videre re1 og re 2:

package cs.au.wtek.shop;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class listShops
*/
@WebServlet("/listShops")
public class listShops extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
    /**
    * @see HttpServlet#HttpServlet()
    */
    public listShops() {
        super();
          private String shops;
         
            public listShops(String shops) {
              return shop;
}
   

    public String shop() {
     

}

//re2:

XML xml = XML.parseTemplate(
                "<w:shops>" +
                    "<w:shops>?????</w:shops>" +
                "</w:shops>")

                .plug("shops);
   

        xml.toDocument(connection.getOutputStream(), "UTF-8");
   

        XML resp = XML.parseDocument(connection.getInputStream());


}

Eller er det helt forkert?
Avatar billede juliemusen Nybegynder
03. marts 2012 - 22:08 #12
public class listShops
 
   
    public listShops() {

          private String shops;
       
            public listShops(String shops) {
              return shop;
}
 

    public String shop() {
   

}

//re2:

XML xml = XML.parseTemplate(
                "<w:shops>" +
                    "<w:shops>?????</w:shops>" +
                "</w:shops>")

                .plug("shops);
 

        xml.toDocument(connection.getOutputStream(), "UTF-8");
 

        XML resp = XML.parseDocument(connection.getInputStream());


}


? :-)
Avatar billede arne_v Ekspert
03. marts 2012 - 22:14 #13
Du kan teste #1, 2 og 3 med en simpel console app, saa du ved om det virker.
Avatar billede juliemusen Nybegynder
03. marts 2012 - 22:16 #14
ehm ok :-/ Det ved jeg godt hvordan man gør :-/ ..... :-)

Er noget af det rigtigt?
Avatar billede arne_v Ekspert
03. marts 2012 - 22:24 #15
Jeg kender ikke den XML klasse du bruger, saa svaert at sige.
Avatar billede arne_v Ekspert
03. marts 2012 - 23:40 #16
Lad mig proeve med et lille eksempel.
Avatar billede arne_v Ekspert
03. marts 2012 - 23:41 #17
Lad os sige at vi har en web service som returnerer:


<?xml version="1.0" encoding="UTF-8"?>
<p:persons xmlns:p="http://arne/p">
    <p:person>
        <p:name>Anders And</p:name>
        <p:animal>Duck</p:animal>
        <p:characteristic>Unlucky</p:characteristic>
    </p:person>
    <p:person>
        <p:name>Joakim Von And</p:name>
        <p:animal>Duck</p:animal>
        <p:characteristic>Rich</p:characteristic>
    </p:person>
    <p:person>
        <p:name>Fætter Højben</p:name>
        <p:animal>Duck</p:animal>
        <p:characteristic>Lucky</p:characteristic>
    </p:person>
    <p:person>
        <p:name>Mickey Mouse</p:name>
        <p:animal>Mouse</p:animal>
        <p:characteristic>Smart</p:characteristic>
    </p:person>
</p:persons>
Avatar billede arne_v Ekspert
03. marts 2012 - 23:41 #18
Foerst laver vi en data klasse:


package wsdemo;

public class Person {
    private String name;
    private String animal;
    private String characterrictic;
    public Person(String name, String animal, String characterrictic) {
        this.name = name;
        this.animal = animal;
        this.characterrictic = characterrictic;
    }
    public String getName() {
        return name;
    }
    public String getAnimal() {
        return animal;
    }
    public String getCharacterrictic() {
        return characterrictic;
    }
}
Avatar billede arne_v Ekspert
03. marts 2012 - 23:42 #19
Saa laver vi noget kode som henter XML:


package wsdemo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

public class GetXml {
    public static String getXml(String urlstr) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader((new URL(urlstr)).openConnection().getInputStream()));
        StringBuilder res = new StringBuilder();
        String line;
        while((line = br.readLine()) != null) {
            res.append(line);
            res.append("\r\n");
        }
        br.close();
        return res.toString();
    }
    public static void main(String[] args) throws Exception {
        System.out.println(getXml("http://localhost:81/listpersons_webservice.xml"));
    }
}
Avatar billede arne_v Ekspert
03. marts 2012 - 23:43 #20
Saa laver vi noget kode som henter XML og parser den:


package wsdemo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class GetAndParseXml {
    public static String getXml(String urlstr) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader((new URL(urlstr)).openConnection().getInputStream()));
        StringBuilder res = new StringBuilder();
        String line;
        while((line = br.readLine()) != null) {
            res.append(line);
            res.append("\r\n");
        }
        br.close();
        return res.toString();
    }
    public static List<Person> parse(String xmlstr) throws ParserConfigurationException, SAXException, IOException {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new InputSource(new StringReader(xmlstr)));
        List<Person> res = new ArrayList<Person>();
        NodeList allp = doc.getElementsByTagNameNS("http://arne/p", "person");
        for (int i = 0; i < allp.getLength(); i++) {
            Element p = (Element)allp.item(i);
            NodeList allelm = p.getChildNodes();
            String name = null;
            String animal = null;
            String characteristic = null;
            for (int j = 0; j < allelm.getLength(); j++) {
                if(allelm.item(j).getNodeType() == Node.ELEMENT_NODE && allelm.item(j).getNamespaceURI().equals("http://arne/p")) {
                    Element elm = (Element)allelm.item(j);
                    if(elm.getLocalName().equals("name")) {
                        name = elm.getFirstChild().getNodeValue();
                    } else if(elm.getLocalName().equals("animal")) {
                        animal = elm.getFirstChild().getNodeValue();
                    } else if(elm.getLocalName().equals("characteristic")) {
                        characteristic = elm.getFirstChild().getNodeValue();
                    }
                }
            }
            res.add(new Person(name, animal, characteristic));
        }
        return res;
    }
    public static void main(String[] args) throws Exception {
        for(Person p : parse(getXml("http://localhost:81/listpersons_webservice.xml"))) {
            System.out.println(p.getName() + " / " + p.getAnimal() + " : " + p.getCharacterrictic());
        }
    }
}
Avatar billede arne_v Ekspert
03. marts 2012 - 23:43 #21
Og saa skal det hele laves som web app.

Stay tuned.
Avatar billede juliemusen Nybegynder
03. marts 2012 - 23:49 #22
ah ha ok, så kan jeg begynde at se noget system i det. Det er sku bare lige det med selv at sidde og lave det. Her er der ihvertfald noget at bygge ud fra. Tusind millioner mange tak for det Arne :-)

Jeg prøver at lave et jsp dokument bagefter til dropdown menuen så. Efter jeg lige har læst og forstået alt dette :-)

Igen tusind tak for det :-)
Avatar billede arne_v Ekspert
03. marts 2012 - 23:54 #23
Old style JSP:


<%@ page import="java.util.*,test.*" %>
<%
List<Person> lst = Util.parse(Util.getXml("http://localhost:81/listpersons_webservice.xml"));
%>
<table border="1">
<tr>
<th>Name</th>
<th>Animal</th>
<th>Characteristic</th>
</tr>
<%
for(int i = 0; i < lst.size(); i++) {
%>
<tr>
<td><%=lst.get(i).getName()%></td>
<td><%=lst.get(i).getAnimal()%></td>
<td><%=lst.get(i).getCharacterrictic()%></td>
</tr>
<%
}
%>
</table>
Avatar billede arne_v Ekspert
03. marts 2012 - 23:58 #24
Lidt nyere stil JSP:


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.*,test.*" %>
<%
List<Person> lst = Util.parse(Util.getXml("http://localhost:81/listpersons_webservice.xml"));
request.setAttribute("lst", lst);
%>
<table border="1">
<tr>
<th>Name</th>
<th>Animal</th>
<th>Characteristic</th>
</tr>
<c:forEach var="o" items="${lst}">
<tr>
<td>${o.name}</td>
<td>${o.animal}</td>
<td>${o.characterrictic}</td>
</tr>
</c:forEach>
</table>
Avatar billede arne_v Ekspert
03. marts 2012 - 23:58 #25
Og saa irriterer det mig med den stave fejl i property navn i Person, men ....
Avatar billede arne_v Ekspert
04. marts 2012 - 00:00 #26
Jeg tror det vigtigste er at erkende at det ikke behoever vaere saa svaert.

Det eneste komplekse i min kode er nok parse og det kunne laves langt nemmere via noget JAXB, men jeg synes ikke at jeg ville inddrage JAXB.
Avatar billede juliemusen Nybegynder
04. marts 2012 - 00:03 #27
hehe, du er sej Arne :-) Jeg prøver at sidde og lave dette nu. Skal sku have det til at virke inden jeg går i seng.

Det er super fedt det her, rigtig mange tak. Nu er der i det mindste en chance for jeg kan få det lavet :-)
Avatar billede juliemusen Nybegynder
04. marts 2012 - 00:04 #28
# 18 + 19 + 20, det laver du i samme dokument ikke?
Avatar billede arne_v Ekspert
04. marts 2012 - 00:19 #29
#19 og #20 bruger XML fra #17.
Avatar billede juliemusen Nybegynder
04. marts 2012 - 00:24 #30
oki, så sætter jeg 19 og 20 i samme java dokument og 18 i  et andet java dokuemnt.

Hm jeg er vist ved at være lidt træt i hovedet :-/ undskyld
Avatar billede arne_v Ekspert
04. marts 2012 - 00:27 #31
For mine JSP brugte jeg en Util.java med de 2 metoder:


package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class Util {
    public static String getXml(String urlstr) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader((new URL(urlstr)).openConnection().getInputStream()));
        StringBuilder res = new StringBuilder();
        String line;
        while((line = br.readLine()) != null) {
            res.append(line);
            res.append("\r\n");
        }
        br.close();
        return res.toString();
    }
    public static List<Person> parse(String xmlstr) throws ParserConfigurationException, SAXException, IOException {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new InputSource(new StringReader(xmlstr)));
        List<Person> res = new ArrayList<Person>();
        NodeList allp = doc.getElementsByTagNameNS("http://arne/p", "person");
        for (int i = 0; i < allp.getLength(); i++) {
            Element p = (Element)allp.item(i);
            NodeList allelm = p.getChildNodes();
            String name = null;
            String animal = null;
            String characteristic = null;
            for (int j = 0; j < allelm.getLength(); j++) {
                if(allelm.item(j).getNodeType() == Node.ELEMENT_NODE && allelm.item(j).getNamespaceURI().equals("http://arne/p")) {
                    Element elm = (Element)allelm.item(j);
                    if(elm.getLocalName().equals("name")) {
                        name = elm.getFirstChild().getNodeValue();
                    } else if(elm.getLocalName().equals("animal")) {
                        animal = elm.getFirstChild().getNodeValue();
                    } else if(elm.getLocalName().equals("characteristic")) {
                        characteristic = elm.getFirstChild().getNodeValue();
                    }
                }
            }
            res.add(new Person(name, animal, characteristic));
        }
        return res;
    }
}
Avatar billede juliemusen Nybegynder
04. marts 2012 - 00:36 #32
ej, jeg tror jeg bliver nød til at fortsætte imorgen. Jeg kan simpelthen ikke finde rundt i det mere. Jeg kan ikke engang overskue hvad der skal i hvilket dokument.
Avatar billede juliemusen Nybegynder
04. marts 2012 - 00:37 #33
og hvad dokumenterne skal hedde også. Jeg er vist træt...
Avatar billede juliemusen Nybegynder
04. marts 2012 - 00:37 #34
gad godt man bare lige kunne gøre ligesom dig, at skrive det så hurtigt.
Avatar billede arne_v Ekspert
04. marts 2012 - 00:47 #35
det tog altsaa ogsaa lidt tid for mig
Avatar billede juliemusen Nybegynder
04. marts 2012 - 00:50 #36
ja ok :-) Det er også meget du har skrevet. Jeg gad så godt bare lige at få sat det op i dokumenterne inden jeg gik i seng.

Jeg har lavet 1 java dokument som hedder: listShops med #18, hvor jeg nu har lavet det om:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class listShops    {

    private String shops;
   
    public listShops(String shops) {
        this.shop = shop;
       
    }
    public String getshops() {
        return shops;
    }
   
}


Så skal jeg oprette et nyt dokument der hedder util.java til #19 og 20 eller?
Avatar billede juliemusen Nybegynder
04. marts 2012 - 00:51 #37
Jeg ved godt jeg virkelig er tungnem lige nu, men det kunen være så dejligt hvis jeg bare lige kunne få sat de java servlet op her :-)
Avatar billede arne_v Ekspert
04. marts 2012 - 01:56 #38
Jeg er ikke helt sikker paa at jeg forstaar hvilke servlet du nu snakker om.

du har en login JSP som submitter til en login servlet som redirecter/forwarder til din vis JSP

Hvor kommer der en ny servlet ind i billedet?
Avatar billede juliemusen Nybegynder
14. marts 2012 - 20:11 #39
Hejsa Arne.

Mange tusinde tak for hjælpen. Vi fik afleveret et nogenlunde projekt, som fik 40 point ud af 50 mulige, så dert er super.

Jeg takker endnu en gang mange tusinde gange for din  gode hjælp:-)

Ligger du et svar?

Kh Julie
Avatar billede arne_v Ekspert
14. marts 2012 - 20:21 #40
svar
Avatar billede arne_v Ekspert
14. marts 2012 - 20:22 #41
skal I saa igang med JSF nu?

:-)
Avatar billede juliemusen Nybegynder
14. marts 2012 - 22:22 #42
Hej Arne.

Jeg skal absolut ikke igang med noget JSF, haha ej spøg til side. Jeg vil meget gerne dyrke noget mere java programmering, da jeg også skal op i det til sommer. Det er lidt ærgeligt jeg kunne har 1120 point tilbage på eksperten nu :-/

Men ellers generelt vil jeg læse meget mere på JSP, XML og Java. Det er de vigtige for mig lige nu synes jeg.

Vi har snakket om hvilket web programmerings sprog der vil være fremtiden. En ph.d studerende på au er fortaler for applets istedet for php osv. Det siger de bla. fordi sevlets, java osv er der ikke særlig mange der kan, ift fx .net eller php. Derfor kan man tilbyde et arbejde noget mere speciel.

Ved ikke om det er rigtigt?
Avatar billede arne_v Ekspert
15. marts 2012 - 16:54 #43
Jeg syntes at kunne huske at JSF stod paa listen over ting I skulle laere.

Man faar ogsaa svar paa 30 og 60 point spoergsmaal.
Avatar billede arne_v Ekspert
15. marts 2012 - 17:08 #44
Det er svaert at spaa isaer om fremtiden.

:-)

Men jeg vil godt spaa at i de naeste 5 aar vil de 3 mest brugte web teknologier: Java EE, ASP.NET og PHP forblive store.

Java EE er ikke naer saa kendt som de andre to, men der er mange jobs.

Et par typiske eksempler fra V2 job:

http://www.version2.dk/it-job/adaptive-javaj2ee-developer-business-focus-43558

http://www.version2.dk/it-job/javaudviklere-aarhus-it-loesninger-til-sundhedssektoren-43064
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester