基础不好,麻烦大家级讲一下吧

hailun 2006-03-25 10:03:22
基础不好,麻烦大家了
这是一个登陆界面,就一问,问题在提交的页面有几问是要问的
-----------------------------------------------------------
这之间的就是问题,怕大家不好找,呵呵
-----------------------------------------------------------


<html>
<head>
<title>Untitled</title>
</head>

<body>

<table align="center" border="0" width="760" cellspacing="0" cellpadding="0" height="355">
<tr>
<td width="150" height="355" valign="top">

</td>
<td width="10" height="100%"></td>
<td width="1" height="100%" bgcolor="#3399ff"></td>
<td width="10" height="100%"></td>
<td width="589" height="331" valign="top" background="images/bg1.gif">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="307">
<tr>
<td width="100%" colspan="2" height="20" bgcolor="#3399ff"> <font color="#ffffff">成员登录</font>
</td>
</tr>

--------------------------------------------------------------------
<form action="webmailservlet.login" method="post"> //书上是这样写的,我想的问就是这个action要跟相对或是绝对路径吗?要把包名一起写上吗?只用login不可以吗?还有这个login是指.java还是.class呢
-------------------------------------------------------------------
<tr><td align="right" height="32" width="40%">名字:</td>
<td>
<input type="hidden" name="returl" value="">
<input type="text" name="logname" value="">
</td>
</tr>
<tr>
<td align="right" height="32">密码:</td>
<td>
<input type="password" name="logpass">
</td>
</tr>
<tr>
<td align="center" colspan="2" height="32"> |
<a href="findpass.jsp">密码忘了,找一下</a> |
<a href="reg.jsp">注册新用户</a> |
<input type="submit" name="login" value="登录!">
</td>
</tr>
</form>
<tr>
<td colspan="2" align="right"> </td>

</tr>

</table>


</td>
</tr>
</table>

</body>
</html>



提交页面

package webmailservlet;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;

public class login extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
public void init() throws ServletException {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
try {
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println( e.getMessage());
}
}
public ResultSet executeQuery(String sql) {
String sConnStr = "jdbc:odbc:webmail";
Connection connect = null;
ResultSet rs = null;
rs = null;
try {
connect = DriverManager.getConnection(sConnStr);
Statement stmt = connect.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return rs;
}
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)
{

}
-------------------------------------------------------------------------------------
return "null"; //有它与没有它有什么区别吗?还有如果是return "";可以吗?
--------------------------------------------------------------------------------------
}
--------------------------------------------------------------------------------------
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //什么时候调用doGet和下面的doPost呢,怎么知道要用哪个呢?在这里好像它们没有什么区别呀,都有PrintWriter out = response.getWriter();这条语句呀
-----------------------------------------------------------------------------------------
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<font color=\"green\">");
out.println("<p>The servlet get method is the reply.</p>");
out.println("</font>");

}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>login</title></head>");
out.println("<body>");
out.println("</body></html>");
String logname,logpass;
boolean loginAttempt = false;
boolean loginOK = false;
String errorMessage = "请您登陆";
HttpSession session=request.getSession(true);
-------------------------------------------------------------------
if(request.getParameterValues("login") != null //这个login什么意思呀,可以没它吧?
-------------------------------------------------------------------------
&&request.getParameterValues("logname") != null
&&request.getParameterValues("logpass") != null)
{
loginAttempt = true;
}
if (loginAttempt)
{
logname=request.getParameter("logname");
logpass=request.getParameter("logpass");
logname=getStr(logname);
logpass=getStr(logpass);
String sql="select * from member where logname='"+logname+"' and password='"+logpass+"'";
out.println(sql);
ResultSet RS=executeQuery(sql);
int rowscount=0;
try
{
while(RS.next())
{
rowscount++;
}
}
catch(Exception e)
{

}
out.println(rowscount);
if(rowscount!=0)
{
errorMessage="成功登陆";
session.setAttribute("username",logname);
loginOK=true;

if(loginOK){
response.sendRedirect("../webmail_sev/main.jsp");
}
}else{
errorMessage="loginerr";
session.setAttribute("username","");
---------------------------------------------------------------------------------
response.sendRedirect("../webmail_sev/login.jsp?err="+errorMessage); //这是啥意思呀?是不是就是给出个错误提示呢?没有别的意思吧?
-------------------------------------------------------------------------------------
}
}
}
/**Clean up resources*/
public void destroy() {
}
}
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hailun 2006-03-27
  • 打赏
  • 举报
回复
response.sendRedirect("../webmail_sev/login.jsp?err="+errorMessage); //这是啥意思呀?是不是就是给出个错误提示呢?没有别的意思吧?


这个我想我知道它会跳转到("../webmail_sev/login.jsp?这个页面那它后跟个err="+errorMessage这是一个页面吗?
hailun 2006-03-26
  • 打赏
  • 举报
回复
还有没有其它的解释了呢
hailun 2006-03-25
  • 打赏
  • 举报
回复
谢谢楼上二位
3.response.sendRedirect("../webmail_sev/login.jsp?err="+errorMessage); //这是啥意思呀?是不是就是给出个错误提示呢?没有别的意思吧?
****->这个表示登陆不成功,转到错误处理页面;
这个页面不还是("../webmail_sev/login.jsp?err="+errorMessage);这个吗?不过是在后面加个错误信息,好像没有跳转呀
supermeteor 2006-03-25
  • 打赏
  • 举报
回复
什么时候调用doGet和下面的doPost呢,怎么知道要用哪个呢?在这里好像它们没有什么区别呀,都有PrintWriter out = response.getWriter();这条语句呀
(不好意思,刚才打错了,是对应<form 里面的method的post和get方法。))
Camelh 2006-03-25
  • 打赏
  • 举报
回复
1.<form action="webmailservlet.login" method="post"> //书上是这样写的,我想的问就是这个action要跟相对或是绝对路径吗?要把包名一起写上吗?只用login不可以吗?还有这个login是指.java还是.class呢
***->一般是相对路径,在java中class文件路径必须与包名一致,才能访问,你这个当然是class文件,.java文件怎么能执行呢?
2.doPost()和doGet()方法是两种不同的参数提交方式,分别对应post和get方式,get方式就是把参数跟在url中,而post方式把数据放在专名的区域,服务器来读取(这个不太准确)
3.response.sendRedirect("../webmail_sev/login.jsp?err="+errorMessage); //这是啥意思呀?是不是就是给出个错误提示呢?没有别的意思吧?
****->这个表示登陆不成功,转到错误处理页面;
supermeteor 2006-03-25
  • 打赏
  • 举报
回复
这个action要跟相对或是绝对路径吗?要把包名一起写上吗?只用login不可以吗?还有这个login是指.java还是.class呢 (要看你的web.xml怎么配置的)

return "null"; //有它与没有它有什么区别吗?还有如果是return "";可以吗? (null 和 "" 是不同的,此例中返回的是一个内容为“null”的字符串,与null和"" 无关)

//什么时候调用doGet和下面的doPost呢,怎么知道要用哪个呢?在这里好像它们没有什么区别呀,都有PrintWriter out = response.getWriter();这条语句呀 (doPost 和doGet分别对应<action 里面的method的post和get方法。)

if(request.getParameterValues("login") != null //这个login什么意思呀,可以没它吧?
(login对应 <input type="submit" name="login" value="登录!"> 的name)


response.sendRedirect("../webmail_sev/login.jsp?err="+errorMessage); //这是啥意思呀?是不是就是给出个错误提示呢?没有别的意思吧?
(页面跳转,用get方法传递err参数,目的应该是在跳转页面给出错误信息)
hailun 2006-03-25
  • 打赏
  • 举报
回复
但登陆界面里的FORM里只有一个POST呀,并没有GET呀
为什么在提交页面里有GET呢
------servlet可以接受两种请求方式,而登陆页面可以选择其中任一方式提交参数.至于怎么处理,就看servlet自己了,比如你这个例子就只处理post方式提交的参数,对于get方式只返回一段绿色文字The servlet get method is the reply.


那可不可以不要这个doGet方法呢?只有doPost
lyazure 2006-03-25
  • 打赏
  • 举报
回复
这个页面不还是("../webmail_sev/login.jsp?err="+errorMessage);这个吗?不过是在后面加个错误信息,好像没有跳转呀
------有跳转,response.sendRedirect(url)将使浏览器向url所指地址另外发起一次请求.中间有一次往返的过程.
但登陆界面里的FORM里只有一个POST呀,并没有GET呀
为什么在提交页面里有GET呢
------servlet可以接受两种请求方式,而登陆页面可以选择其中任一方式提交参数.至于怎么处理,就看servlet自己了,比如你这个例子就只处理post方式提交的参数,对于get方式只返回一段绿色文字The servlet get method is the reply.
hailun 2006-03-25
  • 打赏
  • 举报
回复
2.doPost()和doGet()方法是两种不同的参数提交方式,分别对应post和get方式,
但登陆界面里的FORM里只有一个POST呀,并没有GET呀
为什么在提交页面里有GET呢

81,111

社区成员

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

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