Works the same way you do it for fixed-function:
1. glGenTextures, to create tex objects
2. set active unit, to set the tex unit you want to bind to
3. bind, set texture you want to modify
4. set properties and glTexImage, to upload data to GPU
5. set sampler uniform, to map your uniform to that unit
6. use in GLSL
There's (almost) no difference between fixed-function and glsl in the way you set up textures. If you don't know how to do that I suggest reading general OpenGL tutorials (Google has dozens of them, Nehe's are quite popular) or read a more thorough book like the OpenGL Programming Guide (examples from that book in LWJGL are here:
http://ciardhubh.de/node/13) or use an engine that does this for you (e.g. Slick, jME, jPCT, Ardor3D).
You modify textures by uploading different data via glTexImage. Textures are read-only in shaders.
You can use more textures by binding them to different texture units with glActiveTex...
If by "how the java program stores the texture" you mean loading image data from a file, then you need a loader for that image format. Existing engines like Slick or jME have those. That's not part of LWJGL.