Problem:
When submiting the page, sometime it fails because of the validation. At this time, the data in the page are lost, and we have to type everything again.
Solution:
Declare the varaible at the beginning, and assign the value from the request. But if it's first fime calling the page, assign it as empty string.
<%
String xmlStr=request.getParameter("xmlStr");if(xmlStr==null)xmlStr="";
%>
<form method=GET >
<tr>
<td><textarea name="xmlStr" rows="12" cols="100"><%=xmlStr%></textarea></td>
</tr>
<tr><td><input type=submit name=submit value='Post'/></td></tr>
</table>
</form>
<%
if(request.getParameter("submit") != null){
if(xmlStr == null || xmlStr.equals("")) {
out.println("<p>xmlStr empty!</p>");
return;
}
// do whatever
}
%>
Larry's Road to J2EE
Total Pageviews
Wednesday, 4 April 2012
best way to keep data in the form when failing to submit in JSP
how to handle binary data such as image in soap based web service
Web Service Part:
supposed that you have a picture named Desert.jpg in package resources
@WebService(serviceName = "PictureService")
@Stateless()
public class PictureService {
@WebMethod(operationName = "getImage")
public byte[] getImage( ) throws IOException {
URL resource = this.getClass().getResource("/resources/Desert.jpg");
InputStream in = resource.openStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
for(int read; (read = in.read(buf)) != -1;) {
bos.write(buf, 0, read);
}
return bos.toByteArray()s;
}
}
Client part as Servlet:
public class test extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
PictureService_Service service = new PictureService_Service();
PictureService port=service.getPictureServicePort();
response.setContentType("image/jpeg");
OutputStream out = response.getOutputStream();
byte[] content = port.getImage();
out.write(content);
out.close();
} catch (IOException_Exception ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
supposed that you have a picture named Desert.jpg in package resources
@WebService(serviceName = "PictureService")
@Stateless()
public class PictureService {
@WebMethod(operationName = "getImage")
public byte[] getImage( ) throws IOException {
URL resource = this.getClass().getResource("/resources/Desert.jpg");
InputStream in = resource.openStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
for(int read; (read = in.read(buf)) != -1;) {
bos.write(buf, 0, read);
}
return bos.toByteArray()s;
}
}
Client part as Servlet:
public class test extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
PictureService_Service service = new PictureService_Service();
PictureService port=service.getPictureServicePort();
response.setContentType("image/jpeg");
OutputStream out = response.getOutputStream();
byte[] content = port.getImage();
out.write(content);
out.close();
} catch (IOException_Exception ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
Sunday, 1 April 2012
Unmarshalling from XML file and marshalling to XML file
ObjectFactory of = new ObjectFactory();
FlightInfo sh = of.createFlightInfo();
//Unmarshalling
JAXBContext ctx = JAXBContext.newInstance(sh.getClass().getPackage().getName());
Unmarshaller unm = ctx.createUnmarshaller();
sh= (FlightInfo)unm.unmarshal(new File("flight.xml"));
//do something with object sh
//Marshalling
try {
javax.xml.bind.Marshaller marshaller = ctx.createMarshaller();
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(sh, new FileOutputStream(new File("flight.xml")));
} catch (javax.xml.bind.JAXBException ex) {
// Handle exception
java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex);
}
FlightInfo sh = of.createFlightInfo();
//Unmarshalling
JAXBContext ctx = JAXBContext.newInstance(sh.getClass().getPackage().getName());
Unmarshaller unm = ctx.createUnmarshaller();
sh= (FlightInfo)unm.unmarshal(new File("flight.xml"));
//do something with object sh
//Marshalling
try {
javax.xml.bind.Marshaller marshaller = ctx.createMarshaller();
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(sh, new FileOutputStream(new File("flight.xml")));
} catch (javax.xml.bind.JAXBException ex) {
// Handle exception
java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex);
}
How to convert String to XMLGregorianCalendar
String mydatetime="2011-09-29T08:55:00";
XMLGregorianCalendar xgc=DatatypeFactory.newInstance().newXMLGregorianCalendar(mydatetime);
XMLGregorianCalendar xgc=DatatypeFactory.newInstance().newXMLGregorianCalendar(mydatetime);
Monday, 26 March 2012
How to cast a list in inheritance
For Example:
public class Person {};
public class Student extends Person{};
List<Person> persons=new ArrayList();
List<Student> students=new ArrayList();
persons=students;
how can you assign students to persons? the last line will throw an error.
public class Person {};
public class Student extends Person{};
List<Person> persons=new ArrayList();
List<Student> students=new ArrayList();
persons=students;
how can you assign students to persons? the last line will throw an error.
Wednesday, 21 March 2012
Example of Inheritance in EJB
table structure
create table "APP".PERSON
(
ID INTEGER not null primary key,
NAME VARCHAR(256),
ADDRESS VARCHAR(256),
PHONE VARCHAR(256),
EMAIL VARCHAR(256),
TYPE VARCHAR(256)
)
person.java
import javax.persistence.*;
@Entity
@Table(name = "PERSON")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE", discriminatorType = DiscriminatorType.STRING,length=1)
public class Person implements java.io.Serializable {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "ADDRESS")
private String address;
@Column(name = "PHONE")
private String phone;
@Column(name = "EMAIL")
private String email;
@Column(name = "TYPE")
private String type;
public Person() {
}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
public String getPhone() { return phone; }
public void setPhone(String phone) { this.phone = phone; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getType() { return type; }
public void setType(String type) { this.type = type; }
}
student.java
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue(value="S")
public class Student extends Person {
public Student() {
}
}
employee.java
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;@Entity
@DiscriminatorValue(value="E")
public class Employee extends Person{
public Employee() {
}
}
create table "APP".PERSON
(
ID INTEGER not null primary key,
NAME VARCHAR(256),
ADDRESS VARCHAR(256),
PHONE VARCHAR(256),
EMAIL VARCHAR(256),
TYPE VARCHAR(256)
)
person.java
import javax.persistence.*;
@Entity
@Table(name = "PERSON")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE", discriminatorType = DiscriminatorType.STRING,length=1)
public class Person implements java.io.Serializable {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "ADDRESS")
private String address;
@Column(name = "PHONE")
private String phone;
@Column(name = "EMAIL")
private String email;
@Column(name = "TYPE")
private String type;
public Person() {
}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
public String getPhone() { return phone; }
public void setPhone(String phone) { this.phone = phone; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getType() { return type; }
public void setType(String type) { this.type = type; }
}
student.java
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue(value="S")
public class Student extends Person {
public Student() {
}
}
employee.java
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;@Entity
@DiscriminatorValue(value="E")
public class Employee extends Person{
public Employee() {
}
}
Tuesday, 20 March 2012
How to get max value for identity column in EJB-QL
For example,
I have a table Bookorder with an Identity column
I can execute the following:
Query query1 = em.createQuery("SELECT MAX(b.id) FROM Bookorder b");
int bo_max=(Integer)query1.getSingleResult();
Please notice that it's Integer and not int when casting the result of query.
I have a table Bookorder with an Identity column
Id
.I can execute the following:
Query query1 = em.createQuery("SELECT MAX(b.id) FROM Bookorder b");
int bo_max=(Integer)query1.getSingleResult();
Please notice that it's Integer and not int when casting the result of query.
Subscribe to:
Posts (Atom)