Ejemplo variables sesión

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Login</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<!-- jQuery library -->
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- Popper JS -->
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<!-- Recuperar el nombre y la contraseña. Si es admin admin ir a otra página -->

<%
String nombre=request.getParameter("nombre");
String pwd=request.getParameter("pwd");



if (nombre!=null && pwd!=null && nombre.equals("admin") && pwd.equals("admin")){
	// Estas variables son accesibles desde cualquier página
	session.setAttribute("nombre", nombre);
	session.setAttribute("saludo", "hola que tal");
	session.setAttribute("intentos", 5);
	response.sendRedirect("panel.jsp");
}
%>

 <form  method="post">
  <div class="form-group">
    <label for="nombre">Nombre:</label>
    <input type="text" class="form-control" placeholder="Introduce nombre" name="nombre" id="nombre">
  </div>
  <div class="form-group">
    <label for="pwd">Password:</label>
    <input type="password" class="form-control" placeholder="Introduce contraseña" name="pwd">
  </div>
  
  <button type="submit" class="btn btn-primary">Enviar</button>
</form> 
	
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Tabla de multiplicar</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<!-- jQuery library -->
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- Popper JS -->
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="zstyle.css">
</head>
<body>
<%
String numero=request.getParameter("numero");

String nombre=(String) session.getAttribute("nombre");
Integer intentos=(Integer)session.getAttribute("intentos");

if(nombre==null){
	response.sendRedirect("login.jsp");
}
%>
<h1>Hola <%=nombre %> tienes <%=intentos %> intentos</h1>
 <form>
  <div class="form-group">
    <label for="numero">Número:</label>
    <input type="number" class="form-control" placeholder="Introduce el número" name="numero"
    value="<%=numero!=null?numero:"" %>" >
  </div>
  <button type="submit" class="btn btn-primary">Enviar</button>
</form> 
	
<%

if (numero!=null && !numero.equals("") && numero.chars().allMatch(Character::isDigit)){
	int num=Integer.parseInt(numero);
	for(int i=1;i<=10;i++){
	//	out.println("<p>"+i+" x "+num+" = "+(i*num)+"</p>");
		%>
		<p><%=i%> x <%=num %> = <%=(i*num) %></p>
		<%
	}
}

%>
</body>
</html>

Ejemplo JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Tirar Monedas</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<!-- jQuery library -->
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- Popper JS -->
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="zstyle.css">
</head>
<body>

	
	<%
	int num1 = (int) Math.floor(Math.random() * 2) + 1;
	int num2 = (int) Math.floor(Math.random() * 2) + 1;

	String moneda1 = num1 == 1 ? "cara" : "cruz";
	String moneda2 = num2 == 1 ? "cara" : "cruz";
	%>
	<h1>
		Juego de las monedas <img src="img/cara.png" />
	</h1>
	<h1>¡Lanza la monedas!</h1>
	<p>
		<%
		if (num1 == 1) {
		%>
		<img src="img/cara.png">
		<%
		} else {
		%>
		<img src="img/cruz.png">
		<%
		}
		%>
		<img src="img/<%=moneda2%>.png">
	</p>
	<%
	if (num1 == num2) {
	%>
	<h2>Has ganado</h2>
	<%
	} else {
	%>
	<h2>Has perdido ¡looser!</h2>
	<%
	}
	%>
	<a href="index.jsp" class="btn btn-primary">Volver a tirar</a>
<script src="js/codigo.js"></script>
</body>
</html>

Ejercicio JSP

Vamos a crear una miniweb con lo siguiente:

Al entrar nos aparecerá una página de login con usuario y contraseña:

Usuario:[ ]
Password:[ ]
[Enviar]

Si el usuario no es ‘admin’ ‘admin’ nos vuelve a la página de login.
Si es ‘admin’ ‘admin’ nos sale una página con estos enlaces:

Tabla de multiplicar
Numero mayor

Si pinchan en tabla de multiplicar nos sale una página con lo siguiente:
Número[ ]
[Enviar]

Si nos introducen un número en esta misma página se mostrará la tabla de multiplicar de ese número

Si pinchan en mayor nos sale una página con lo siguiente:
Número 1 [ ] Número 2 [ ]
[Enviar]
Al darle a enviar nos dice cual es el número mayor de los dos

Mejoras: que tanto en la tabla de multiplicar como en los números ya estén por defecto los valores que hemos enviado en vez de quedarse en blanco.

Ejercicio extra:
Añadir un enlace ‘palíndromo’ con un formulario en el que ponemos una cadena y nos diga si es palíndromo.

Para crear funciones dentro de un jsp hay que utilizar el siguiente tag:


<%!

%>

https://www.javatpoint.com/jsp-declaration-tag

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Login</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<!-- jQuery library -->
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- Popper JS -->
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="zstyle.css">
</head>
<body>
<!-- Recuperar el nombre y la contraseña. Si es admin admin ir a otra página -->

<%
String nombre=request.getParameter("nombre");
String pwd=request.getParameter("pwd");

if (nombre!=null && pwd!=null && nombre.equals("admin") && pwd.equals("admin")){
	response.sendRedirect("panel.jsp");
}
%>

 <form  method="post">
  <div class="form-group">
    <label for="nombre">Nombre:</label>
    <input type="text" class="form-control" placeholder="Introduce nombre" name="nombre" id="nombre">
  </div>
  <div class="form-group">
    <label for="pwd">Password:</label>
    <input type="password" class="form-control" placeholder="Introduce contraseña" name="pwd">
  </div>
  
  <button type="submit" class="btn btn-primary">Enviar</button>
</form> 
	
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Tirar Monedas</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<!-- jQuery library -->
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- Popper JS -->
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="zstyle.css">
</head>
<body>
<h1>Bienvenido a las utilidades maravillosas del ejercicio</h1>
<h2><a href="tabla.jsp">Tabla de multiplicar</a></h2>
<h2><a href="mayor.jsp">Mayor y menor</a></h2>
<h2><a href="palindromo.jsp">¿Es palíndromo?</a></h2>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Tabla de multiplicar</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<!-- jQuery library -->
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- Popper JS -->
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="zstyle.css">
</head>
<body>
<%
String numero=request.getParameter("numero");
%>

 <form>
  <div class="form-group">
    <label for="numero">Número:</label>
    <input type="number" class="form-control" placeholder="Introduce el número" name="numero"
    value="<%=numero!=null?numero:"" %>" >
  </div>
  <button type="submit" class="btn btn-primary">Enviar</button>
</form> 
	
<%

if (numero!=null && !numero.equals("") && numero.chars().allMatch(Character::isDigit)){
	int num=Integer.parseInt(numero);
	for(int i=1;i<=10;i++){
	//	out.println("<p>"+i+" x "+num+" = "+(i*num)+"</p>");
		%>
		<p><%=i%> x <%=num %> = <%=(i*num) %></p>
		<%
	}
}

%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Mayor y menor</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<!-- jQuery library -->
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- Popper JS -->
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="zstyle.css">
</head>
<body>

	<%
	String numero1 = request.getParameter("numero1");
	String numero2 = request.getParameter("numero2");
	numero1=numero1==null?"":numero1;
	%>

	<form>
		<div class="form-group">
			<label for="numero1">Número 1:</label> <input type="number"
				class="form-control" placeholder="Introduce el número"
				name="numero1" id="numero1" value="<%=numero1 %>">
		</div>
		<div class="form-group">
			<label for="numero2">Número 2:</label> <input type="number"
				class="form-control" placeholder="Introduce el número"
				name="numero2" value="<%=numero2!=null?numero2:"" %>">
		</div>
		<button type="submit" class="btn btn-primary">Enviar</button>
	</form>

	<%
	if (!numero1.equals("") && numero1.chars().allMatch(Character::isDigit) && numero2 != null
			&& !numero2.equals("") && numero2.chars().allMatch(Character::isDigit)) {
		int num1 = Integer.parseInt(numero1);
		int num2 = Integer.parseInt(numero2);

		if (num2 > num1) {
			num1 = num2;
		}
	%>
	<h2>
		El número mayor es
		<%=num1%></h2>
	<%
	}
	%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>¿Es palíndromo?</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<!-- jQuery library -->
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- Popper JS -->
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="zstyle.css">
</head>
<body>

	<%
	String cadena = request.getParameter("cadena");
	
	if (cadena != null) {
		if (esPalindromo(cadena)) {
	%>
	<h2>
		La cadena <b><%=cadena%></b> es un palíndromo
	</h2>
	<%
	} else {
	%>
	<h2>
		Lo siento, la cadena <b><%=cadena%></b> NO es un palíndromo
	</h2>
	<%
	}

	String mensaje = "";
	if (!esPalindromo(cadena)) {
	mensaje = " NO ";
	}
	%>
	<h2>
		La cadena <b><%=cadena%></b>
		<%=mensaje%>
		es un palíndromo
	</h2>
	<%
	}
	%>

	<form>
		<div class="form-group">
			<label for="numero1">Introduce la cadena:</label> <input type="text"
				class="form-control" placeholder="Introduce la cadena" name="cadena"
				value="<%=cadena != null ? cadena : ""%>">
		</div>
		<button type="submit" class="btn btn-primary">Enviar</button>
	</form>

	<%!boolean esPalindromo(String cadena) {
		cadena = normalizar(cadena);
		StringBuilder foo = new StringBuilder(cadena);
		return cadena.equals(foo.reverse().toString());
	}

	// He creado una función normalizar para otros caracteres
	String normalizar(String cadena) {
		return cadena.toLowerCase().replace("á", "a").replace("é", "e").replace("í", "i").replace("ó", "o")
				.replace("ú", "u").replace("ü", "u").replace(" ", "").replace(".", "").replace(",", "");
	}%>
</body>
</html>

Objetos request y response

https://jtagua.wordpress.com/2010/10/07/tutorial-de-jsp-12-objeto-implicito-request/

https://jtagua.wordpress.com/2010/10/17/tutorial-de-jsp-13-objeto-implicito-response/

https://beginnersbook.com/2013/11/jsp-implicit-object-response-with-examples/

http://chuwiki.chuidiang.org/index.php?title=Pasar_datos_entre_JSPs_y_Servlets._Page,_Request,_Session_y_Application_scope

<%
String nombre=request.getParameter("nombre");
String email=request.getParameter("email");

if (nombre.equals("admin")){
	response.sendRedirect("admin.jsp");
}
%>

Otro ejemplo:

<%
	String num1 = request.getParameter("num1");
	String num2 = request.getParameter("num2");
	if (num1!=null && !num1.equals("")) {
		out.print("Has enviado " + num1 + " y " + num2);
		int suma=Integer.parseInt(num1)+Integer.parseInt(num2);
		%>
		<h2>La suma es <%=suma %></h2>
		<%
	}
	%>

	<form>
		<input type="text" name="num1"> <input type="text" name="num2">
		<input type="submit">
	</form>

Ejercicio JSP

Crear una web que nos haga una tirada de un dado:

¡Lanza los dados!

Has sacado un XX
Volver a tirar

Usad el ejemplo de cara y cruz que tenéis en la otra entrada.
Volver a tirar es un enlace a la propia página.

Ejercicio preparación examen

Vamos a crear las siguientes clases:

Televisor

Propiedades:
String modelo
int pulgadas
int peso

Ordenador

Propiedades

String nombre
int ram
int hdd
String placa

Lavavajillas

String marca
int capacidad

Todas las propiedades privadas con getters y setters. COnstructores con todas las propiedades.
No está de más crear una sobrecarga del toString.

Crearemos también el interfaz Paqueteria que tiene los siguientes métodos:

int getPeso()
int getDiagonal()

Las tres clases anteriores DEBEN implementar los métodos.

En el caso del televisor el peso que tiene en la propiedad peso. La diagonal son las pulgadas*5
En el caso del ordenador el peso es 500 y la diagonal 70
En el caso del lavavajilas el peso es 200* capacidad y la diagonal la capacidad/.7

Cread un main para probar que todo funcione.

Nuestra empresa se dedica a almacenar objetos de todo tipo y se organizan en palés. Vamos a crear una clase Pale que tiene como propiedades:

int capacidad
int lado
List<Paqueteria>

El constructor está sobrecargado, podemos tenerlo pasando las propiedades capacidad y lado, en cuyo caso se agina el valor que nos están pasando, o podemos tenerlo sin parámetros, en cuyo caso la capacidad es de 2000 y el lado es de 500.

Tendrá un método addPaquete(Paqueteria paquete) que nos añade un paquete al arrayList
Tendrá un método eliminarMasPesados(int peso) que nos elimine los elementos del arrayList que sean más pesados que el peso que se le pasa como parámetro.
Tendrá un método totalPeso que nos diga el total de los pesos de los componentes del arraylist
Y un método totalAncho que nos devolverá la suma de las diagonales de los componentes del arrayList

Una vez tengamos esto en addPaquete tendremos que comprobar que el elemento que añadimos no hace que el total del peso sea mayor que la capacidad, no que el total del ancho sea mayor que el lado.

Por último crear un método fueraTelevisores() que nos elimine del arraylist todos los televisores.

Vamos a crear la clase Almacen que tiene como propiedades

Un array de 20 pales
Un arrayList de Paqueteria

En el contructor inicializamos el array con los 20 pales sin parámetros y el arraylist.

Tenemos un método addPaquete que nos añade el paquete a la paquetería.

Y un método llenarPales que nos va cogiendo los elementos que hay en el arraylist y metiéndolos en los palés hasta su capacidad. Cuando llenamos uno, pasamos al siguiente.

package com.trifulcas.preexamen;

public class Televisor implements Paqueteria {
	private String modelo;
	private int pulgadas;
	private int peso;
	
	
	public Televisor(String modelo, int pulgadas, int peso) {
		super();
		this.modelo = modelo;
		this.pulgadas = pulgadas;
		this.peso = peso;
	}
	/**
	 * @return the modelo
	 */
	public String getModelo() {
		return modelo;
	}
	/**
	 * @param modelo the modelo to set
	 */
	public void setModelo(String modelo) {
		this.modelo = modelo;
	}
	/**
	 * @return the pulgadas
	 */
	public int getPulgadas() {
		return pulgadas;
	}
	/**
	 * @param pulgadas the pulgadas to set
	 */
	public void setPulgadas(int pulgadas) {
		this.pulgadas = pulgadas;
	}
	/**
	 * @return the peso
	 */
	public int getPeso() {
		return peso;
	}
	/**
	 * @param peso the peso to set
	 */
	public void setPeso(int peso) {
		this.peso = peso;
	}
	@Override
	public String toString() {
		return "Televisor [modelo=" + modelo + ", pulgadas=" + pulgadas + ", peso=" + peso + "]";
	}
	@Override
	public int getDiagonal() {
		// TODO Auto-generated method stub
		return getPulgadas()*5;
	}
	

}

package com.trifulcas.preexamen;

public class Ordenador implements Paqueteria{
	private String nombre;
	private int ram;
	private int hdd;
	private String placa;
	
	
	public Ordenador(String nombre, int ram, int hdd, String placa) {
		super();
		this.nombre = nombre;
		this.ram = ram;
		this.hdd = hdd;
		this.placa = placa;
	}
	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}
	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	/**
	 * @return the ram
	 */
	public int getRam() {
		return ram;
	}
	/**
	 * @param ram the ram to set
	 */
	public void setRam(int ram) {
		this.ram = ram;
	}
	/**
	 * @return the hdd
	 */
	public int getHdd() {
		return hdd;
	}
	/**
	 * @param hdd the hdd to set
	 */
	public void setHdd(int hdd) {
		this.hdd = hdd;
	}
	/**
	 * @return the placa
	 */
	public String getPlaca() {
		return placa;
	}
	/**
	 * @param placa the placa to set
	 */
	public void setPlaca(String placa) {
		this.placa = placa;
	}
	@Override
	public String toString() {
		return "Ordenador [nombre=" + nombre + ", ram=" + ram + ", hdd=" + hdd + ", placa=" + placa + "]";
	}
	@Override
	public int getPeso() {
		// TODO Auto-generated method stub
		return 500;
	}
	@Override
	public int getDiagonal() {
		// TODO Auto-generated method stub
		return 70;
	}
	
	
}

package com.trifulcas.preexamen;

public class Lavavajillas implements Paqueteria {
	private String marca;
	private int capacidad;
	
	
	public Lavavajillas(String marca, int capacidad) {
		super();
		this.marca = marca;
		this.capacidad = capacidad;
	}
	/**
	 * @return the marca
	 */
	public String getMarca() {
		return marca;
	}
	/**
	 * @param marca the marca to set
	 */
	public void setMarca(String marca) {
		this.marca = marca;
	}
	/**
	 * @return the capacidad
	 */
	public int getCapacidad() {
		return capacidad;
	}
	/**
	 * @param capacidad the capacidad to set
	 */
	public void setCapacidad(int capacidad) {
		this.capacidad = capacidad;
	}
	@Override
	public String toString() {
		return "Lavavajillas [marca=" + marca + ", capacidad=" + capacidad + "]";
	}
	@Override
	public int getPeso() {
		// TODO Auto-generated method stub
		return 200*getCapacidad();
	}
	@Override
	public int getDiagonal() {
		// TODO Auto-generated method stub
		return (int) (getCapacidad()*.7);
	}
	
	
}

package com.trifulcas.preexamen;

public interface Paqueteria {
	int getPeso();
	int getDiagonal();
}
package com.trifulcas.preexamen;

import java.util.ArrayList;
import java.util.List;

public class Pale {
	private int capacidad;
	private int lado;
	private List<Paqueteria> paquetes;

	public Pale(int capacidad, int lado) {
		super();
		this.capacidad = capacidad;
		this.lado = lado;
		paquetes = new ArrayList<Paqueteria>();
	}

	public Pale() {
		this(2000, 500);
	}

	public void addPaquete(Paqueteria paquete) {
		if (cabePaquete(paquete)) {
			paquetes.add(paquete);
		}
	}

	public void eliminarMasPesados(int peso) {
		// Voy del final al principio para que no se me 'mueva' el arraylist
		for (int i = paquetes.size() - 1; i >= 0; i--) {
			if (paquetes.get(i).getPeso() > peso) {
				paquetes.remove(i);
			}
		}
	}

	public int totalPeso() {
		int res = 0;
		for (Paqueteria paquete : paquetes) {
			res += paquete.getPeso();
		}
		return res;
	}

	public int totalAncho() {
		int res = 0;
		for (Paqueteria paquete : paquetes) {
			res += paquete.getDiagonal();
		}
		return res;
	}

	@Override
	public String toString() {
		return "Pale [capacidad=" + capacidad + ", lado=" + lado + ", paquetes=" + paquetes + "]";
	}
	
	public void fueraTelevisores() {
		for (int i = paquetes.size() - 1; i >= 0; i--) {
			if (paquetes.get(i) instanceof Televisor) {
				paquetes.remove(i);
			}
		}
	}
	public boolean cabePaquete(Paqueteria paquete) {
		return totalPeso() + paquete.getPeso() <= capacidad && totalAncho()+paquete.getDiagonal()<=lado;
	}

}
package com.trifulcas.preexamen;

import java.util.ArrayList;
import java.util.List;

public class Almacen {
	private Pale[] pales;
	private List<Paqueteria> paquetes;

	public Almacen() {
		paquetes = new ArrayList<Paqueteria>();
		pales = new Pale[20];
		for (int i = 0; i < 20; i++) {
			pales[i] = new Pale();
		}
	}

	public void addPaquete(Paqueteria paquete) {
		paquetes.add(paquete);
	}

	public void llenarPales() {
		for (int i = paquetes.size() - 1; i >= 0; i--) {
			for (int j = 0; j < 20; j++) {
				if (pales[j].cabePaquete(paquetes.get(i))) {
					pales[j].addPaquete(paquetes.get(i));
					paquetes.remove(i);
					break;
				}
			}
		}
	}
}
package com.trifulcas.preexamen;

public class TestPreExamen {

	public static void main(String[] args) {
		Televisor lg = new Televisor("lg", 40, 100);
		System.out.println(lg);
		System.out.println(lg.getDiagonal());
		
		Ordenador dell=new Ordenador("Dell",10,10,"AMD");
		System.out.println(dell);
		
		Lavavajillas braun=new Lavavajillas("Braun",200);
		System.out.println(braun);
		System.out.println(braun.getDiagonal());
		System.out.println(braun.getPeso());
		
		Pale pale=new Pale(3000,700);
		pale.addPaquete(braun);
		pale.addPaquete(dell);
		pale.addPaquete(lg);
		System.out.println(pale);
		
		pale.fueraTelevisores();
		System.out.println(pale);
	}

}

Ejemplos static

package com.trifulcas.ejemplos;

public class EjemploStatic {

	public String nombre;
	// Quiere decir dos cosas: Existe aunque no haya instancia de la clase
	// El valor es compartido por todas las instancias de esta clase
	public static String aula; 
	
	public void saludo() {
		System.out.println("Hola "+nombre);
	}
	
	public static void despedida() {
		// Esto da un error no puedo acceder a propiedades no estáticas
		//System.out.println("Adios "+nombre);
	}

	public static void dondeEstoy() {
		System.out.println("Estoy en el aula "+aula);
	}
}
	EjemploStatic.aula="Aula 10";
		EjemploStatic a=new EjemploStatic();
		a.nombre="Ana";
		System.out.println(a.aula);
		a.saludo();
		a.dondeEstoy();
		EjemploStatic b=new EjemploStatic();
		b.nombre="Eva";
		b.dondeEstoy();
		System.out.println(b.aula);