在一个servlet编写的网页中插入图片,显示不出,怎么回事?

tommaomao233 2011-11-17 05:38:17
这是源代码,images这个文件夹放在放WEB-INF的那个文件夹下,即与工程名同名的文件夹下


package userMS;
//用户登录界面

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res ){
this.doPost(req, res);
}

public void doPost(HttpServletRequest req,HttpServletResponse res){
//先建一个网页
res.setContentType("text/html;charset=gb2312");
try {
PrintWriter pw=res.getWriter();
pw.println("<html>");
pw.println("<body bgcolor=pink >");
pw.println("<img src=\"/images/butf2.jpg\" width=\"100\" hight=\"100\">");
pw.println("<center>");
pw.println("<h1>用户登录系统</h1>");
pw.println("<hr>");


//用一个表格来得到用户名和密码
pw.println("<form action=??? method=post>");
pw.println("用户名:<input type=text name=uname><br><br>");
pw.println("密 码:<input type=password name=passwd><br>");
pw.println("<input type=submit value=登录><br>");
pw.println("</form>");

pw.println("</center>");
pw.println("<hr>");
pw.println("</body>");
pw.println("</html>");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}



}





这是效果



哪位知道怎么回事呢?
...全文
1109 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
tommaomao233 2011-11-19
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 sanjiuailuoluo 的回复:]

引用 21 楼 zxcnlmx 的回复:

引用 16 楼 sanjiuailuoluo 的回复:

引用 15 楼 jennis1990 的回复:

pw.println("<img src='./image/lixi.jpg' width='100' hight='100'>");

src中要有./




啊~~~ 成功啦

多谢啊


在浏览器上可……
[/Quote]

这里在内置浏览器上 我的LoginMServlet.java之前老报错 【此时在外部浏览器上已可以实现所有功能】

原因不明 不过我将此servlet中的主要部分粘了下来,然后又新建了一个LoginMServlet.java,将原来生成的代码能保留的就保留【之前的全是手写】,将复制到代码粘到正确的位置


就可以了 没报错了【汗一个】



另外
用Servlet插入图片eg:

pw.println("<img src='"+req.getContextPath()+"/images/bf1.jpg' width='200' hight='200'>");

用jsp插入图片eg:

<img src="./images/logo4.gif">

谢谢以上各位,结贴
tommaomao233 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 zxcnlmx 的回复:]

引用 16 楼 sanjiuailuoluo 的回复:

引用 15 楼 jennis1990 的回复:

pw.println("<img src='./image/lixi.jpg' width='100' hight='100'>");

src中要有./




啊~~~ 成功啦

多谢啊


在浏览器上可以了

不过不知道为什么在MyEclipse……
[/Quote]

不过在内置浏览器里还是不行

请问知道怎么回事么?
tommaomao233 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 zxcnlmx 的回复:]

引用 16 楼 sanjiuailuoluo 的回复:

引用 15 楼 jennis1990 的回复:

pw.println("<img src='./image/lixi.jpg' width='100' hight='100'>");

src中要有./




啊~~~ 成功啦

多谢啊


在浏览器上可以了

不过不知道为什么在MyEclipse……
[/Quote]


嗯 看来你这样写比较好 就不用考虑在哪个目录下了么?!
tommaomao233 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xtj332 的回复:]

你的servlet的路径是什么?
{
在你的项目下面的web.xml里面,是不是写的:
<servlet>
<servlet-name>doUpdateOrAdd</servlet-name>
<servlet-class>service.doUpdateOrAdd</servlet-class>
</servlet>


<servlet-mappin……
[/Quote]

哦 意思是我把图片放在MyEclipse安装目录下的项目文件夹下的WebRoot下也是可以的 只是要加两个点


而我直接放在Tomcat的安装目录下的webapps下的项目文件夹下还是可以 前面加一个点 ?!

是这意思?!

我试试看

AM18 2011-11-18
  • 打赏
  • 举报
回复
为什么 程序里面能用绝对路径的一定要用绝对路径???

这就是Eclipse与MyEclipse的区别了,Myeclipse的jsp页面已经获取了项目的根目录,这样的话,你用相对路径的话,跳转到父级什么的,它就要从根目录开始算了
freewind 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 zxcnlmx 的回复:]

引用 16 楼 sanjiuailuoluo 的回复:

引用 15 楼 jennis1990 的回复:

pw.println("<img src='./image/lixi.jpg' width='100' hight='100'>");

src中要有./




啊~~~ 成功啦

多谢啊


在浏览器上可以了

不过不知道为什么在MyEclipse……
[/Quote]


为什么 程序里面能用绝对路径的一定要用绝对路径???
AM18 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 sanjiuailuoluo 的回复:]

引用 15 楼 jennis1990 的回复:

pw.println("<img src='./image/lixi.jpg' width='100' hight='100'>");

src中要有./




啊~~~ 成功啦

多谢啊


在浏览器上可以了

不过不知道为什么在MyEclipse自带的那个浏览器中还实现不了

你遇到过这种情况么
?……
[/Quote]


告诉你一个简单的方法,不管是内置的浏览器,还是外面的都一样!
归根结底就是一个路径的问题:
你写得这个是叫相对路径,程序里面能用绝对路径的一定要用绝对路径。比较你的那个图片就应该这样写:

out.println("<img src='"+req.getContextPath()+"/image/lixi.jpg' width='100' hight='100'>");

req是你的HttpServletRequest对象
freewind 2011-11-17
  • 打赏
  • 举报
回复
额、、。。

已经解决了。。。。
freewind 2011-11-17
  • 打赏
  • 举报
回复
你的servlet的路径是什么?
{
在你的项目下面的web.xml里面,是不是写的:
<servlet>
<servlet-name>doUpdateOrAdd</servlet-name>
<servlet-class>service.doUpdateOrAdd</servlet-class>
</servlet>


<servlet-mapping>
<servlet-name>doUpdateOrAdd</servlet-name>
<url-pattern>/servlet/doUpdateOrAdd</url-pattern>
</servlet-mapping>
}

其中/servlet/doUpdateOrAdd表示你当前的Servlet的路径是项目下servlet这个文件夹里面存放的。(虽然servlet这个文件夹不是真实存在的。)

在Eclipse中,项目下面的WebRoot就相当于根目录。你的Servlet的位置是在这个目录下面的servlet这个文件夹下面,(虽然这个文件夹不是真实存在的,只是一个映射关系、)。 如果在WebRoot下面有个文件夹images,images文件夹下面有文件butf2.jpg ,那么你应该这么写代码:
out.println("<img src=\"../image/login_lei.jpg\"/>");

..的作用是进去上一级目录。。。。Do you understand?..
tommaomao233 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jennis1990 的回复:]

我用的Netbeans做的,没有内置浏览器,你在myeclipse内置浏览器中使用你的写法能运行么?
[/Quote]

呃 就是不行啊 用360什么的 可以
MpsLee 2011-11-17
  • 打赏
  • 举报
回复
我用的Netbeans做的,没有内置浏览器,你在myeclipse内置浏览器中使用你的写法能运行么?
tommaomao233 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jennis1990 的回复:]

pw.println("<img src='./image/lixi.jpg' width='100' hight='100'>");

src中要有./
[/Quote]



啊~~~ 成功啦

多谢啊


在浏览器上可以了

不过不知道为什么在MyEclipse自带的那个浏览器中还实现不了

你遇到过这种情况么




我写的是 登录界面—>验证(也是一个servlet)->成功的话,欢迎界面


在360浏览器上已经完全可以实现了 可是在MyEclipse自带的那个也不行

验证(LoginMServlet.java)那儿老是报错 这种情况
MpsLee 2011-11-17
  • 打赏
  • 举报
回复
pw.println("<img src='./image/lixi.jpg' width='100' hight='100'>");

src中要有./
tommaomao233 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhoujiajun88 的回复:]

images直接放在项目的根目录,不是WEB_INF目录
然后
pw.println("<img src=\"/images/butf2.jpg\" width=\"100\" hight=\"100\">");
[/Quote]

哦 顺便说一句 应该是Tomcat安装目录下的那个文件夹吧

MyEclipse的安装文件夹里也有那几个文件 在WebRoot里

刚刚实在不行 我每个都加了images这个文件夹 还是不行


tommaomao233 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 chabale 的回复:]

在你的路径前面加一个request.getContextPath()
[/Quote]

??具体??
tommaomao233 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhoujiajun88 的回复:]

images直接放在项目的根目录,不是WEB_INF目录
然后
pw.println("<img src=\"/images/butf2.jpg\" width=\"100\" hight=\"100\">");
[/Quote]

我就是这么做滴
chabale 2011-11-17
  • 打赏
  • 举报
回复
在你的路径前面加一个request.getContextPath()
有爱的小止 2011-11-17
  • 打赏
  • 举报
回复
images直接放在项目的根目录,不是WEB_INF目录
然后
pw.println("<img src=\"/images/butf2.jpg\" width=\"100\" hight=\"100\">");
tommaomao233 2011-11-17
  • 打赏
  • 举报
回复
嗯 这个MyEclipse+Tomcat写Web程序

这两个下面都有工程名 也有WEB-INF 、index.jsp等文件


我可真是糊涂了
tommaomao233 2011-11-17
  • 打赏
  • 举报
回复
各位别光说不对啊 哪儿不对呢 我可是跟着servlet教程来的啊





顺便说一句 这个CSDN插照片 怎么复制的地址不管用 还得查看原图才行 悲催
加载更多回复(5)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧