npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

tracomalo

v1.0.1

Published

Java y otros temas de desarrollo

Downloads

2

Readme

Consejos de HttpServlets

Desde el comienzo del desarrollo web, los atributos de sesión se han utilizado para retener información importante sobre la sesión de un usuario. Este concepto también es válido cuando se desarrolla utilizando servlets Java, y los servlets facilitan la configuración y obtención de los valores de los atributos. Todas las clases HttpServlet deben implementar métodos doGet o doPost para procesar eventos de aplicaciones web. Al hacerlo, estos métodos tienen acceso al objeto HttpServletRequest cuando se les pasa como argumento. Un objeto HttpSession se puede obtener de HttpServletRequest y, por lo tanto, se puede usar para recuperar y establecer atributos según sea necesario. En la solución a esta receta, se utiliza un atributo de sesión HTTP para almacenar una dirección de correo electrónico. Luego, esa dirección se usa en toda la aplicación dentro de diferentes clases de servlets obteniendo el objeto de sesión y luego recuperando el valor del atributo.

La descarga de archivos es una tarea esencial para casi cualquier aplicación web. Realizar los pasos que se proporcionan en esta receta facilitará la realización de esta tarea. El ejemplo de esta receta demuestra un caso sencillo en el que los usuarios pueden visitar una página web, hacer clic en un archivo para descargar y recuperar el archivo del servidor y copiarlo en su máquina.

El HTML es muy simplista en este ejemplo y enumera un enlace URL que invoca el servlet y pasa el nombre del archivo que se va a descargar. Cuando el usuario hace clic en el enlace, el nombre del archivo se pasa a / DownloadServlet como parámetro con el nombre del archivo. Cuando se hace clic en el enlace, se invoca el método doGet del servlet. La primera tarea que se realiza en el método doGet es leer el parámetro de nombre de archivo de la página web que invoca. Luego, esa información se pasa al método doDownload junto con los objetos HttpServletRequest y HttpServletResponse.

En el método doDownload, el ServletOutputStream se obtiene del objeto HttpServletResponse y el ServletContext se obtiene para su uso posterior. Para descargar un archivo, el servlet debe proporcionar una respuesta del mismo tipo que coincida con la del archivo que se va a descargar. También debe indicar en el encabezado de la respuesta que se incluirá un archivo adjunto. Por lo tanto, las primeras tareas que debe realizar el método doDownload implican configurar HttpServletResponse de manera adecuada. response.setContentType ((context.getMimeType (originalFile)! = null)? context.getMimeType (originalFile): "texto / plano"); response.setHeader ("Content-Disposition", "adjunto; nombre de archivo = " "+ originalFile +" \ "");

El nombre del archivo, en este caso originalFile, se utiliza para obtener el tipo MIME del archivo. Si el tipo MIME del archivo es nulo, se devolverá texto sin formato. El archivo adjunto también se configura en el encabezado de la respuesta, agregando el nombre del archivo como un archivo adjunto a la disposición del contenido. A continuación, el método doDownload obtiene una referencia al archivo que se descargará llamando al método getResourceAsStream de ServletContext y pasando el nombre del archivo. Esto devolverá un objeto InputStream que se puede usar para leer el contenido del archivo indicado. A continuación, se crea un búfer de bytes, que se utilizará para obtener fragmentos de datos del archivo cuando se esté leyendo. La tarea real final es leer el contenido del archivo y copiarlo en el flujo de salida. Esto se hace usando un bucle while, que continuará leyendo desde InputStream hasta que todo haya sido procesado. Los fragmentos de datos se leen y se escriben en el flujo de salida mediante el bucle.

Por último, se llama al método flush del objeto ServletOutputStream para borrar el contenido y luego se cierra para liberar recursos. Sin embargo, la magia de descargar archivos utilizando un servlet Java puede quedar un poco confusa en este ejemplo, porque en este ejemplo se está utilizando un archivo estático como fuente de descarga. En la vida real, la página HTML probablemente contendría una lista de archivos que están contenidos dentro de una base de datos, y luego, cuando el usuario selecciona un archivo para descargar, el servlet procesará ese archivo en consecuencia, incluso extrayéndolo de la base de datos si es necesario.