修改web.xml如下
<web-app>
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<servlet>
<servlet-name>checkin</servlet-name>
<servlet-class>hgdb.checkin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>checkin</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
jsp调用的语句:<form name="f1" action="/hg/checkin" method="post">
<web-app>
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<servlet>
<servlet-name>checkin</servlet-name>
<servlet-class>hgdb.checkin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>checkin</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
jsp调用的语句:<form name="f1" action="/hg/checkin" method="post">
解决方案 »
- Spring dataSource 问题
- 打开端口 50,000 上服务器 /192.168.1.100 的套接字时出错,消息为:Connection timed out: connect。 ERROR
- 如何使用for循环将table中的三列横向排?
- 如何统计并显示...
- 在modify.jsp中怎么的到href="modify.jsp?id=<%=id%>">中id的值
- 请指教如何在jsp中向oracle数据库存储图片
- 救救小妹!类似163信箱上传附件的问题,问题解决100相送!
- 下拉列表框问题。
- 在使用JDBC数据源时出错,请高手指教:)
- 刷新一次JSP页面,javabean返回来的结果就会累加!为什么?
- 关于while(resultset.next())的问题
- 谁有mm.mysql.jdbc-1.2c.tar.gz这个文件,急需!
<web-app>
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<servlet>
<servlet-name>checkin</servlet-name>
<servlet-class>hgdb.checkin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>checkin</servlet-name>
<url-pattern>/hg/checkin</url-pattern>
</servlet-mapping>
</web-app>
jsp调用的语句:<form name="f1" action="/hg/checkin" method="post">
我的servlet文件在webapps\hg\WEB-INF\classes\serv\check.class,为了区别.现在改成了check,应该是serv.check吧。如果有多个,在url-pattern里写*会不会冲突??多谢先!!!
改成:
<form name="f1" action="/servlet/hgdb.checkin" method="post">
试试看
还有我如果将<url-pattern>设置成/*,就直接出来servlet的doGet方法返回的页面,敲原来登陆的jsp页面时就不见了,是不是jsp页面就直接调用了servlet返回来了???应该要get或者post的不???
多谢先!!!
c:/tomcat/conf 目录下的 server.xml文件加上下面的配置
<Context path="/myapp" docBase="c:/myapp" debug="0" reloadable="true">
</Context>
其次:
c:/myapp/WEB-INF 目录下的 web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>addservlet</servlet-name>
<servlet-class>add.addservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addservlet</servlet-name>
<url-pattern>/mes/addservlet</url-pattern>
</servlet-mapping>
</web-app>
JSP中调用:
<form action="addservlet" method="get">
我的servlet存放的路径是
c:/myapp
.......WEN-INF
..............classes
.....................add
.........................addservlet.class
........mes
...........调用servlet的JSP文件存放的位置我调试成功的路径配置,不知道对楼主是否有帮助。
----------------------------
大哥们可以解释一下详细意思不?<url-pattern>是什么意思?规则上是应该怎么写?是不是路径?
我的servlet文件在webapps\hg\WEB-INF\classes\serv\check.class,为了区别.现在改成了check,应该是serv.check吧。如果有多个,在url-pattern里写*会不会冲突??多谢先!!!
----------------------------
url-pattern就是用你的servlet-name替换其中的*就可以访问
例如
<servlet-mapping>
<servlet-name>logoutServlet</servlet-name>
<url-pattern>/*.do</url-pattern>
</servlet-mapping>
则你可以用 /logoutServlet.do 访问这个servlet
----------------------------
我照chanceqw大哥的方法重新配置了web.xml文件,但是现在我的初始也页面出不来了,本来是敲入http://localhost:8080/hg/login.jsp,由jsp文件调用servlet.但是现在一执行浏览器返回的是servlet里的doGet方法里的回应,生成了一个页面。这是怎么回事?小弟很迷惑??
----------------------------
没submit就返回结果?
doGet方法应该是你输入
http://localhost:8080/hg/checkin?name=value
的时候才有返回。
你的form的method是post应该在提交以后返回doPost啊
----------------------------
我用bozhhu的方法试了也不行,我的servlet文件在webapps\hg\WEB-INF\classes\serv\check.class,为了区别.现在改成了check,应该是serv.check吧。<url-pattern>应该怎么设置啊??请就我的路径示范一下,
还有我如果将<url-pattern>设置成/*,就直接出来servlet的doGet方法返回的页面,敲原来登陆的jsp页面时就不见了,是不是jsp页面就直接调用了servlet返回来了???应该要get或者post的不???
多谢先!!!
----------------------------
web.xml
<servlet>
<servlet-name>check</servlet-name>
<servlet-class>serv.check</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>check</servlet-name>
<url-pattern>/*.do</url-pattern>
</servlet-mapping>然后可以用/check.do访问
doGet()对应的是http://localhost:8080/hg/check.do?name="value"
doPost()对应的是
<form name="f1" action="/hg/check.do" method="post">
在点击这个form的submit之后,会调用check的doPost方法你说的情况有点奇怪,你的login.jsp代码是什么?
我的jsp代码:login.jsp 在tomcat\webapps\hg目录中
<%@ include file="js.jsp" %>
<%@ page contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>管理系统</title>
<link rel="stylesheet" href="tzhg.css" type="text/css">
<script>
function sub()
{
if(document.f1.user_name.value=="")
{
alert("请输入用户名!");
document.f1.user_name.focus();
}
else
{
if(document.f1.user_pwd.value=="")
{
alert("请输入密码!");
document.f1.user_pwd.focus();
}
else
document.f1.submit();
}
}
</script>
</head><body>
<form name="f1" method="post" action="serv.check" >
<p align="center">
<img align="absmiddle" src="img/tzhg.jpg" width="282" height="198"><br><br>
<center>
<table border=0 style="background-color:white"><tr height="30">
<td style="background-color:white">
<p align="center">
用户名:<input name="user_name" size=12 onKeyPress="return keyCheck1(event, this)" maxlength="30">
密码:<input type="password" name="user_pwd" size=12 onKeyPress="return keyCheck1(event, this)" maxlength="30">
</p>
</td>
<td valign=bottom style="background-color:white">
<a href="javascript:sub()"><img src="img/sub.jpg" border=0 width="47" height="19"></a>
<a href="javascript:document.f1.reset()"><img src="img/res.jpg" border=0 width="47" height="19"></a>
</td>
</tr>
</table>
</center>
</form>
</body>
</html> web.xml:
<servlet>
<servlet-name>check</servlet-name>
<servlet-class>serv.check</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>check</servlet-name>
<url-pattern>/check</url-pattern>
</servlet-mapping>
check.class打成了包,在classes目录。 serv.check:
package serv;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import hg.db;
public class check extends HttpServlet
{
int user_id;
String user_xm="";
String role_id="";
String errorMessage="";
//boolean loginAttempt=false;
public void init() throws ServletException{
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<font color=\"green\">");
out.println("<p>The servlet get method is the reply</p>");
out.println("</font>");
} public String getStr(String str)
{
try
{
String temp_p=str;
byte[] temp_t=temp_p.getBytes("ISO8859-1");
String temp=new String(temp_t);
return temp;
}
catch(Exception e)
{
e.printStackTrace();
}
return "null";
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
HttpSession session=request.getSession();
response.setContentType("text/html;charset=GB2312");
PrintWriter out=response.getWriter();
String user_name=getStr(request.getParameter("user_name"));
String user_password=getStr(request.getParameter("user_pwd"));
db dl=new db();
dl.sqlDriver();
String sql="select * from tb_user where user_name='"+user_name+"' ";
ResultSet rs=dl.sqlQuery(sql);
try
{
if(!rs.next())
{
errorMessage="没有这个用户";
session.setAttribute("username","");
//response.sendRedirect("default.jsp");
}
else {
if(rs.getString("user_sta").equals("1"))
{
errorMessage="此用户名已被禁用,请联系系统管理员!";
}
if(rs.getString("user_sta").equals("0"))
{
if(!rs.getString("password").trim().equals(user_password))
{
errorMessage="您输入的密码不正确!";
//response.sendRedirect("login.jsp");
}
if(errorMessage!="")
{
out.println("<script>window.alert('"+errorMessage+"');history.back();</script>");
}
else
{
user_id=rs.getInt("user_id");
user_xm=getStr(rs.getString("user_xm"));
role_id=getStr(rs.getString("role_id"));
session.setAttribute("user_id",String.valueOf(user_id));
session.setAttribute("user_xm",user_xm);
session.setAttribute("role_id",role_id);
response.sendRedirect("../hg/frame.jsp");
}
}
/*else {
response.sendRedirect("frame.jsp");
} */
}
}
catch(Exception e)
{ System.err.println(e.getMessage()); }
}
}
我已经被这个问题难半个月了,如蒙解决,定高分相送。
<servlet-name>check</servlet-name>
<url-pattern>/check</url-pattern>
</servlet-mapping><form name="f1" method="post" action="serv.check" >显然这是错误的,你在web.xml里定义servlet的访问路径为/check,但你却在action里用别的路径,改成:
<form name="f1" method="post" action="/check" >
或
<servlet-mapping>
<servlet-name>check</servlet-name>
<url-pattern>/serv/check</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>check</servlet-name>
<servlet-class>serv.check</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>check</servlet-name>
<url-pattern>/check</url-pattern>
</servlet-mapping>
在web.xml是这样配的情况下,调用语句写成<form name="f1" method="post" action="../hg/check" >,已经可以了,是我的servlet有一些语法错误。但是对于目录的映射问题,还是不懂,为什么在调用时的路径要写成../hg/check,包名可以不写??不理解,请高手哥们总结一下。servlet已经调用成功了。但是想总结一下经验,到底该怎么配??到时候一定散分。多谢大哥们先。
上面的例子是因为你的webapp是在hg下,也就是hg下就是你的根目录,访问路径 <url-pattern>/check</url-pattern> 那在action里的访问就是/hg/check, 你如果改成<url-pattern>/aaa/bbb/ccc/ddd/check</url-pattern>, 那你在action里写成/hg/aaa/bbb/ccc/ddd/check一样可以访问,不信你可以试一下。 反过来,改变class文件的包,不改变web访问路径,你也可以试试,很容易就可以明白啦。 其实也可以不用设置servlet路径,因为在conf目录下也有个web.xml,在那里定义了默认的servlet访问路径/servlet/*, 这个星就代表你的class文件的全路径(包括包名)
在action 的路径就是 /hg/servlet/serv/check 你也可以试试