Buscando artículos sobre "JSP"
20-junio-2023
admin

Problema de Encoding UTF-8 en Spring MVC

CharacterEncodingFilter es un filtro que nos ayuda a especificar un tipo de codificación de caracteres concreto tanto para solicitudes y como para las respuestas.

Se puede configurar en el fichero web.xml de tu aplicación. De la siguiente forma:

 

   encodingFilter
   org.springframework.web.filter.CharacterEncodingFilter
   
       encoding
       UTF-8
   
   
       forceEncoding
       true
   


   encodingFilter
   /*

En el caso de que estés usando Spring Security, en lugar de configurar el CharacterEncodingFilter en el web.xml necesitas crear un filtro personalizado y añadirlo a la cadena de filtros en primer lugar. Puedes asegurarte que el filtro esté el primero si lo añades con el addFilterBefore en tu clase WebSecurityConfigurerAdapter. Ejemplo:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
   ...
   @Override
   protected void configure(HttpSecurity http) throws Exception {
      http.addFilterBefore(new EncodingFilter(), ChannelProcessingFilter.class);
      ...
   }
}
public class EncodingFilter extends GenericFilterBean {
@Override
public void doFilter(
   ServletRequest request,
   ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
      request.setCharacterEncoding("UTF-8");
      response.setCharacterEncoding("UTF-8");
      chain.doFilter(request, response);
   }
}

Además, para que funcione el encoding, se debe tener en cuenta lo siguiente:
1 – Es necesario añadir en las jsps la siguiente definición.

< %@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" % >

2 – En caso de estar utilizando Tomcat puede se sea necesario setear el valor URIEncoding en el fichero server.xml.

 

5-abril-2014
admin

Libreria de funciones JSTL

La libreria functions de JSTL (TAGLIB) nos facilita trabajar con Strings y Arrays en el lenguaje EL de JSP. Consta de las siguientes funciones:

fn:contains()
fn:containsIgnoreCase()
fn:endsWith()
fn:escapeXml()
fn:indexOf()
fn:join()
fn:length()
fn:replace()
fn:split()
fn:startsWith()
fn:substring()
fn:substringAfter()
fn:substringBefore()
fn:toLowerCase()
fn:toUpperCase()
fn:trim()

Para poder utilizarla es necesario incluir la siguiente cabecera:

< %@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

Tutorial
JavaDoc
Página con ejemplos de uso

14-noviembre-2012
admin

Plugin para el eclipse que genera aplicación automaticamente

Sotilizator

En GitHub he creado un repositorio donde comparto un plugin para el eclipse que he implementado y que facilita el desarrollo aplicaciones J2EE https://github.com/roberto-pf/Sotilizator. El plugin consigue implementar toda la lógica de negocio de una aplicación que utiliza: Struts + Spring + hibernate + JQuery.

Qué es el Sotilizator?
Se trata de un plugin para el eclipse (probado en su versión Helios). La finalidad de este plugin es la creación de una aplicación web de forma automática y con unas determinadas características a partir de un esquema de una Base de Datos.
Estas características son:
1 – La aplicación resultante estará realizada empleando un MVC en J2EE con Struts 1.3, inyección de dependencias con Spring 3.0, hibernate 3.2.6 para el acceso a datos para la parte de la lógica de negocio. Mientras que para la parte de la vista se empleará jquery junto a las tag-libraries de struts. Además, de DWR para interactuar con el servidor desde el cliente.
2 – Se generará un fichero pom.xml para que a través de MAVEN se puedan obtener las dependencias.
3 – Se generará un fichero build.xml donde estarán las tareas Ant necesarias para el despliegue de la aplicación en Tomcat, JBoss y OAS.
4 – La aplicación resultante será capaz de construir las tareas CRUD de las tablas automáticamente. A partir del esquema de la BD obtendrá los campos y su tipo.
5 – Las capas que contendrá la aplicación son las siguientes:

        VO: Objetos que hace referencias a las tablas.
	DAO: Capa que realiza el acceso a la BD. 
	Manager: Capa sobre la que se aplican las transacciones.
	Delegate: Capa que se encarga de relacionar la parte de la vista 
                  con la lógica de negocio.
	Action: Aquí deberán ir las diferentes acciones que luego el 
                controlador mapea para interactuar con la vista.

Esquema de la lógica de negocio

Nota: Para más información consultar manuales del usuario y del programador: https://github.com/roberto-pf/Sotilizator/tree/master/Readme

12-mayo-2012
admin

Propiedades nth-child y first-child de jquery.

JQuery tiene varias propiedades que se pueden utilizar para acceder a nodos concretos que están dentro de un nodo padre. Entre estas propiedades voy a comentar el funcionamiento de: first-child y nth-child

Para ello voy a utilizar un ejemplo. Supongamos que tenemos un Select cuyo id es «selectPrueba».

first-child – Se puede utilizar para seleccionar el primer elemento.
p.e. esto seleccionaria en el combo el primer elemento.

$('select#selectPrueba option:first-child').attr("selected", "selected");

nth-child – Permite seleccionar un elemento concreto.
p.e. esto seleccionaria en el combo el elemento 4.

$('select#selectPrueba option:nth-child(4)').attr('selected', 'selected');

Más información con ejemplos: first-child y nth-child.

15-marzo-2012
admin

Lenguaje de expresiones (EL) – Objetos implícitos

Se representan en las JSP mediante anotaciones del tipo: ${ … }.
De esta forma se indica que la información ingresada dentro de las llaves, no es leída literalmente, sino que se tiene que evaluar, y usar el resultado de esta evaluación.

Hay objetos que son automáticamente accesibles a cualquier etiqueta JSP. A través de ellos es posible acceder a cualquier variable de los ámbitos page, request, session, application, a parametros HTTP, cookies, valores de cabeceras, contexto de la página, y parámetros de inicialización del contexto.

– pageScope: Variables de ámbito página.
– requestScope: Variables de ámbito request.
– sessionScope: Variables de ámbito session.
– applicationScope: Variables de ámbito application.
– param: Parametros del request como cadenas.
– paramValues: Parametros del request como array de cadenas.
– header: Cabeceras del request HTTP como cadenas.
– headerValues: Cabeceras del request HTTP como array de cadenas.
– cookie: Valores de las cookies recibidas en el request.
– initParam: Parametros de inicialización de la aplicación Web.
– pageContext: El objeto PageContext de la página actual.

p.e.
${pageContext.request.requestURL} URL usada para acceder a la página.

En esta página se puede encontrar bastante más información de las propiedades de estos objetos implícitos.

1-febrero-2012
admin

Test does not support runtime expressions

Programando unas jsp me he encontrado con una serie de ‘warnnings’. Aunque al ejecutarlas bajo un tomcat funcionaban correctamente, en un OAS daban problemas. Los ‘warnnings’ en cuestión eran tal que así:

  • test does not support runtime expressions
  • value does not support runtime expressions
  • items does not support runtime expressions

Esto sucedía porque estaba importando la taglib de JSTL 1.0 en lugar de su versión 1.1.
Utilizaba:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

En lugar de:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"  %>

Como se puede ver, las dos URI’s se parecen mucho y es bastante fácil equivocarse.

Categorias

Linkedin