JSP+Servlet+JavaBean做的留言板,在登录界面跳转不到下一个界面

时间:2021-05-10 19:04:41
本人用JSP+Servlet+JavaBean做了个留言板,里面的JavaBean的就是就是照着书上敲的代码,敲完没有做什么动作。
登录界面(login.jsp)是提交到一个mainServlet.java的。
但是登录后还是在留在login.jsp界面。
而在login.jsp界面点击注册后可以跳转到注册界面(register.jsp)
在注册界面注册提交后是到Resgister.java的。它能跳转但是页面一片空白。
导航栏变成http://localhost:8080/JSPExample/registerServlet
这是怎么回事呢?
是javaBean要配置我没配置?还是什么原因?

26 个解决方案

#1


mainServlet.java
是一个servlet类,并不是页面文件,这个类要配合web.xml中的配置才能提交进去。
JSP和JSP之间跳转是不用配置而可以直接跳的。
看下面的web.xml文件配置:

  <servlet>
    <servlet-name>TestServlet1</servlet-name>
    <servlet-class>com.pyh.test.service.TestServlet1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet1</servlet-name>
    <url-pattern>/test1/mainServlet</url-pattern>
  </servlet-mapping>


servlet-name:可随意,有两处,要一致
servlet-class:指定你的mainServlet,注意是包.类名,没有java或class后缀
url-pattern:提交路径,也是你的form表单中action中的路径

#2


javaBean不需要注册,我觉得是你提交到register.java之后,就没有再跳转到jsp页面了,因为servlet是在浏览器上不显示的

#3


 <servlet>
    <servlet-name>TestServlet1</servlet-name>
    <servlet-class>com.pyh.test.service.TestServlet1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet1</servlet-name>
    <url-pattern>/test1/mainServlet</url-pattern>
  </servlet-mapping>

你的servlte需要在web.xml配置地址, 这样表单提交相应的地址 就会到对应的servlet里面

#4


1. 登录界面(login.jsp)是提交到一个mainServlet.java的。但是登录后还是在留在login.jsp界面。

你确定你已经提交到mainServlet.java中了,最好在你的方法体里面输出一些东西看看。
如果你能跳转进来,那么你判断成功了之后有调转到其他地方去吗?response.redirect(url)或者request.getRequestDispatcher(url).forward(request,response);
这样才能跳转出去。

2. 在login.jsp界面点击注册后可以跳转到注册界面(register.jsp)

这个只是一个超链接,不涉及你后台程序,所以只要路径正确肯定能跳转过去

3. 在注册界面注册提交后是到Resgister.java的。它能跳转但是页面一片空白。导航栏变成http://localhost:8080/JSPExample/registerServlet

和第一点一样,你要确定是跳转到对应的servlet里面去了,然后判断成功以后要控制他的跳转



如果你使用的是out.write("")那就把你要显示的内容写在里面就OK了,不需用跳转页面了!

#5


引用 3 楼  的回复:
 <servlet>
    <servlet-name>TestServlet1</servlet-name>
    <servlet-class>com.pyh.test.service.TestServlet1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet1</ser……


大概明白你的意思。但是注册后,Resgister.java里面有response.sendRedirect("login.jsp");的,可是它一直停留在http://localhost:8080/JSPExample/registerServlet的空白页面,没有跳转到login.jsp是怎么回事呢?是数据库问题吗?

#6


引用 5 楼  的回复:
引用 3 楼  的回复:

<servlet>
<servlet-name>TestServlet1</servlet-name>
<servlet-class>com.pyh.test.service.TestServlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet1</ser………


debug或者用System.out.println();看看走到哪一步了

数据库的问题的话那他报异常了吗?

#7


相关代码发上来,让大家瞅瞅。。

#8


引用 7 楼  的回复:
相关代码发上来,让大家瞅瞅。。

数据库表:User表(id(int),username(varchar),password(varchar)),lyTable表(id(int),userId(int),date(datetime),title(varchar),conten(varchar))
对应的javaBean
package model;

public class User {
    private int id;
    private String username;
    private String password;
    
    public void setId(int id)
    {
     this.id=id;
    }
    public int getId()
    {
     return id;
    }
    
    public void setUsername(String username)
    {
     this.username=username;
    }
    public String getUsername()
    {
     return username;
    }
    
    public void setPassword(String password)
    {
     this.password=password;
    }
    public String getPassword()
    {
     return password;
    }

}
package model;
import java.sql.*;
public class LyTable {
private int id;
private int userId;
private Date date;
private String title;
private String conten;

public void setId(int id)
{
this.id=id;
}
public int getId()
{
return id;
}

public void setUserId(int userId)
{
this.userId=userId;
}
public int getUserId()
{
return userId;
}

public void setDate(Date date)
{
this.date=date;
}
public Date getDate()
{
return date;
}

public void setTitle(String title)
{
this.title=title;
}
public String getTitle()
{
return title;
}

public void setConten(String conten)
{
this.conten=conten;
}
public String getContent()
{
return conten;
}
}


login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <title>简易留言板</title>
  </head>
  
  <body  bgcolor="#E3E3E3">
  <form action="mainServlet" method="post">
  <table>
  <caption>用户登录</caption>
       <tr>
        <td>登录名:</td>
        <td>
           <input type="text" name="username" size="20"/>
        </td>
       </tr> 
       <tr>
        <td>密码:</td>
          <td>
           <input type="password" name="pwd" size="20"/>
          </td>
       </tr>
  </table>
  <input type="submit" value="登录"/>
  <input type="reset" value="重置"/>
  </form>
  如果没有注册请单击<a href="register.jsp">这里</a>注册
  </body>
 
</html>



mainServlet.java
package servlet;
import java.io.*;

import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import model.User;
import db.DB;
@SuppressWarnings("serial")
public class MainServlet extends HttpServlet{
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
//设置请求编码
request.setCharacterEncoding("gb2312");
//设置响应编码编码
response.setContentType("gb2312");
//获取JSP页面输入的用户值
String username=request.getParameter("username");
//获得JSP页面输入的密码值
String pwd=request.getParameter("pwd");
//建立DB类对象,使用其中的方法来完成判断
DB db=new DB();
//获得session对象,用来保存信息
HttpSession session=request.getSession();
//先获得user对象,如果是第一次访问该Servlet,用户对象肯定为空。但如果是
//第二次第三次,就不应该判断该用户信息\
User user=(User)session.getAttribute("user");
//这里就是判断,如果用户是第一次进入,调用DB的方法判断
if(user==null)
{
user=db.checkUser(username,pwd);
}
//吧user对象存在session中。
session.setAttribute("user",user);
if(user!=null)
{
//这里根据用户查询,用户不为空,表示用户密码正确,应该去下一个页面
//这里去下一个页面,主页面包含了所有的留言信息,所以要从留言板表中查出来
ArrayList al=db.findLyInfo();
//把查询的信息保存在session中。
session.setAttribute("al",al);
//然后跳转到我们要去的页面
response.sendRedirect("main.jsp");
}

else
{
//如果用户名和密码错误,回到登录界面
//out.write("用户名或密码出错");
response.sendRedirect("login.jsp");
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
 throws ServletException,IOException{
doGet(request,response);
}
}


DB.java
package db;
import java.sql.*;
import java.util.*;
import model.LyTable;
import model.User;
public class DB {
Connection ct;
PreparedStatement pstmt;
//在构造函数中建立与数据库连接,这样在建立DB对象时就连接了数据库
public DB()
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct=DriverManager.getConnection
("jdbc:sqlserver://localhost:1443;databaseName=JSP","sa","123");
}
catch(Exception e)
{
e.printStackTrace();
}
}
//根据uername和password查询用户,查到返回该对象,没有就返回null
public User checkUser(String username,String password)
{
try
{
pstmt=ct.prepareStatement("select * from [userTable] where username=? and password=?");
//必须设置每个 ? 参数的值
pstmt.setString(1,username);
pstmt.setString(2,password);
ResultSet rs=pstmt.executeQuery();
User user=new User();

while(rs.next())
{
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
return user;
}
return null;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
//查询留言信息,返回一个ArrayList
@SuppressWarnings("unchecked")
public ArrayList findLyInfo()
{
try
{
ArrayList al=new ArrayList();
pstmt=ct.prepareStatement("select * from [lyTable]"); 
ResultSet rs=pstmt.executeQuery();

while(rs.next())
{
LyTable ly=new LyTable();
ly.setId(rs.getInt(1));
ly.setUserId(rs.getInt(2));
ly.setDate(rs.getDate(3));
ly.setTitle(rs.getString(4));
ly.setConten(rs.getString(5));
al.add(ly);
}

 return al;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
public String getUserName(int id)
{
String username=null;
try
{
pstmt=ct.prepareStatement("select username from [userTable] where id=?");
pstmt.setInt(1,id);
ResultSet rs=pstmt.executeQuery();
while(rs.next())
{
username=rs.getString(1);
}
return username;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}

public boolean addInfo(LyTable ly)
{
try
{
pstmt=ct.prepareStatement("insert into [lyTable] values(?,?,?,?)");
pstmt.setInt(1,ly.getUserId());
pstmt.setDate(2,ly.getDate());
pstmt.setString(3,ly.getTitle());
pstmt.setString(4, ly.getContent());
pstmt.executeUpdate();
return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}

public boolean insertUser(String username,String pwd)
{
try
{
pstmt=ct.prepareStatement("insert into [userTable] value(?,?)");
pstmt.setString(1, username);
pstmt.setString(2, pwd);
pstmt.executeUpdate();
return true;

}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}
}




相关类在这,谢谢各位大侠了

#9


引用 7 楼  的回复:
相关代码发上来,让大家瞅瞅。。

数据库表:User表(id(int),username(varchar),password(varchar)),lyTable表(id(int),userId(int),date(datetime),title(varchar),conten(varchar))

对应的javaBean
package model;

public class  User {
  private int id;
  private String username;
  private String password;
   
  public void setId(int id)
  {
  this.id=id;
  }
  public int getId()
  {
  return id;
  }
   
  public void setUsername(String username)
  {
  this.username=username;
  }
  public String getUsername()
  {
  return username;
  }
   
  public void setPassword(String password)
  {
  this.password=password;
  }
  public String getPassword()
  {
  return password;
  }

}


package model;
import java.sql.*;
public class  LyTable {
private int id;
private int userId;
private Date date;
private String title;
private String conten;

public void setId(int id)
{
this.id=id;
}
public int getId()
{
return id;
}

public void setUserId(int userId)
{
this.userId=userId;
}
public int getUserId()
{
return userId;
}

public void setDate(Date date)
{
this.date=date;
}
public Date getDate()
{
return date;
}

public void setTitle(String title)
{
this.title=title;
}
public String getTitle()
{
return title;
}

public void setConten(String conten)
{
this.conten=conten;
}
public String getContent()
{
return conten;
}
}



mainServlet.java
package servlet;
import java.io.*;

import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import model.User;
import db.DB;
@SuppressWarnings("serial")
public class MainServlet extends HttpServlet{
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
//设置请求编码
request.setCharacterEncoding("gb2312");
//设置响应编码编码
response.setContentType("gb2312");
//获取JSP页面输入的用户值
String username=request.getParameter("username");
//获得JSP页面输入的密码值
String pwd=request.getParameter("pwd");
//建立DB类对象,使用其中的方法来完成判断
DB db=new DB();
//获得session对象,用来保存信息
HttpSession session=request.getSession();
//先获得user对象,如果是第一次访问该Servlet,用户对象肯定为空。但如果是
//第二次第三次,就不应该判断该用户信息\
User user=(User)session.getAttribute("user");
//这里就是判断,如果用户是第一次进入,调用DB的方法判断
if(user==null)
{
user=db.checkUser(username,pwd);
}
//吧user对象存在session中。
session.setAttribute("user",user);
if(user!=null)
{
//这里根据用户查询,用户不为空,表示用户密码正确,应该去下一个页面
//这里去下一个页面,主页面包含了所有的留言信息,所以要从留言板表中查出来
ArrayList al=db.findLyInfo();
//把查询的信息保存在session中。
session.setAttribute("al",al);
//然后跳转到我们要去的页面
response.sendRedirect("main.jsp");
}

else
{
//如果用户名和密码错误,回到登录界面
//out.write("用户名或密码出错");
response.sendRedirect("login.jsp");
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
doGet(request,response);
}
}


DB.java
package db;
import java.sql.*;
import java.util.*;
import model.LyTable;
import model.User;
public class DB {
Connection ct;
PreparedStatement pstmt;
//在构造函数中建立与数据库连接,这样在建立DB对象时就连接了数据库
public DB()
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct=DriverManager.getConnection
("jdbc:sqlserver://localhost:1443;databaseName=JSP","sa","123");
}
catch(Exception e)
{
e.printStackTrace();
}
}
//根据uername和password查询用户,查到返回该对象,没有就返回null
public User checkUser(String username,String password)
{
try
{
pstmt=ct.prepareStatement("select * from [userTable] where username=? and password=?");
//必须设置每个 ? 参数的值
pstmt.setString(1,username);
pstmt.setString(2,password);
ResultSet rs=pstmt.executeQuery();
User user=new User();

while(rs.next())
{
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
return user;
}
return null;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
//查询留言信息,返回一个ArrayList
@SuppressWarnings("unchecked")
public ArrayList findLyInfo()
{
try
{
ArrayList al=new ArrayList();
pstmt=ct.prepareStatement("select * from [lyTable]"); 
ResultSet rs=pstmt.executeQuery();

while(rs.next())
{
LyTable ly=new LyTable();
ly.setId(rs.getInt(1));
ly.setUserId(rs.getInt(2));
ly.setDate(rs.getDate(3));
ly.setTitle(rs.getString(4));
ly.setConten(rs.getString(5));
al.add(ly);
}

return al;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
public String getUserName(int id)
{
String username=null;
try
{
pstmt=ct.prepareStatement("select username from [userTable] where id=?");
pstmt.setInt(1,id);
ResultSet rs=pstmt.executeQuery();
while(rs.next())
{
username=rs.getString(1);
}
return username;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}

public boolean addInfo(LyTable ly)
{
try
{
pstmt=ct.prepareStatement("insert into [lyTable] values(?,?,?,?)");
pstmt.setInt(1,ly.getUserId());
pstmt.setDate(2,ly.getDate());
pstmt.setString(3,ly.getTitle());
pstmt.setString(4, ly.getContent());
pstmt.executeUpdate();
return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}

public boolean insertUser(String username,String pwd)
{
try
{
pstmt=ct.prepareStatement("insert into [userTable] value(?,?)");
pstmt.setString(1, username);
pstmt.setString(2, pwd);
pstmt.executeUpdate();
return true;

}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}
}

#10


怎么没有下文了呢!

#11


引用 10 楼  的回复:
怎么没有下文了呢!

什么意思?

#12


打断点调试去,看代码看的有点晕,哈哈

#13


web.xml文件呢?
重要的咱不发代码出来 

#14


servlet的使用你是需要每个页面都配置web.xml配置文件的。

#15


引用 13 楼  的回复:
web.xml文件呢?
重要的咱不发代码出来
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <servlet>
   <servlet-name>mainServlet</servlet-name>
   <servlet-class>servlet.MainServlet</servlet-class>
  </servlet>
  <servlet>
   <servlet-name>addServlet</servlet-name>
   <servlet-class>servlet.AddServlet</servlet-class>
  </servlet>
  <servlet>
   <servlet-name>registerServlet</servlet-name>
   <servlet-class>servlet.RegisterServlet</servlet-class>
  </servlet>
  
    <servlet-mapping>
   <servlet-name>mainServlet</servlet-name>
   <url-pattern>/mainServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
   <servlet-name>addServlet</servlet-name>
   <url-pattern>/addServlet</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
   <servlet-name>registerServlet</servlet-name>
   <url-pattern>/registerServlet</url-pattern>
  </servlet-mapping>
</web-app>

#16


引用 14 楼  的回复:
servlet的使用你是需要每个页面都配置web.xml配置文件的。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <servlet>
   <servlet-name>mainServlet</servlet-name>
   <servlet-class>servlet.MainServlet</servlet-class>
  </servlet>
  <servlet>
   <servlet-name>addServlet</servlet-name>
   <servlet-class>servlet.AddServlet</servlet-class>
  </servlet>
  <servlet>
   <servlet-name>registerServlet</servlet-name>
   <servlet-class>servlet.RegisterServlet</servlet-class>
  </servlet>
  
    <servlet-mapping>
   <servlet-name>mainServlet</servlet-name>
   <url-pattern>/mainServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
   <servlet-name>addServlet</servlet-name>
   <url-pattern>/addServlet</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
   <servlet-name>registerServlet</servlet-name>
   <url-pattern>/registerServlet</url-pattern>
  </servlet-mapping>
</web-app>

#17


<servlet-class>servlet.MainServlet</servlet-class>这个是你的包名加类名?

#18


引用 17 楼 xuanyuan5201314 的回复:
<servlet-class>servlet.MainServlet</servlet-class>这个是你的包名加类名?


恩恩,是

#19


xml配置了?

#20


引用 17 楼 xuanyuan5201314 的回复:
<servlet-class>servlet.MainServlet</servlet-class>这个是你的包名加类名?
你使用
RequestDispatcher dispatcher=
request.getRequestDispatcher("login.jsp");
dispatcher.forward(request,response);这个方式试一下。

#21


求围观,也是这个问题!!

#22


lz把整个程序发来我看哈. JSP+Servlet+JavaBean做的留言板,在登录界面跳转不到下一个界面

#23


request.getRequestDispatcher("/main.jsp").forward(request, response); 

#24


一个个为了分这么多代码都能全整出来,你是不是那个servlet url的配置和放文件的包名有冲突的

#25


应该是两种原因吧。1:web.xml 没配置 2:servlet 没有配置跳转到jsp显示

#26


用注解不就好了吗,写那么多干嘛

#1


mainServlet.java
是一个servlet类,并不是页面文件,这个类要配合web.xml中的配置才能提交进去。
JSP和JSP之间跳转是不用配置而可以直接跳的。
看下面的web.xml文件配置:

  <servlet>
    <servlet-name>TestServlet1</servlet-name>
    <servlet-class>com.pyh.test.service.TestServlet1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet1</servlet-name>
    <url-pattern>/test1/mainServlet</url-pattern>
  </servlet-mapping>


servlet-name:可随意,有两处,要一致
servlet-class:指定你的mainServlet,注意是包.类名,没有java或class后缀
url-pattern:提交路径,也是你的form表单中action中的路径

#2


javaBean不需要注册,我觉得是你提交到register.java之后,就没有再跳转到jsp页面了,因为servlet是在浏览器上不显示的

#3


 <servlet>
    <servlet-name>TestServlet1</servlet-name>
    <servlet-class>com.pyh.test.service.TestServlet1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet1</servlet-name>
    <url-pattern>/test1/mainServlet</url-pattern>
  </servlet-mapping>

你的servlte需要在web.xml配置地址, 这样表单提交相应的地址 就会到对应的servlet里面

#4


1. 登录界面(login.jsp)是提交到一个mainServlet.java的。但是登录后还是在留在login.jsp界面。

你确定你已经提交到mainServlet.java中了,最好在你的方法体里面输出一些东西看看。
如果你能跳转进来,那么你判断成功了之后有调转到其他地方去吗?response.redirect(url)或者request.getRequestDispatcher(url).forward(request,response);
这样才能跳转出去。

2. 在login.jsp界面点击注册后可以跳转到注册界面(register.jsp)

这个只是一个超链接,不涉及你后台程序,所以只要路径正确肯定能跳转过去

3. 在注册界面注册提交后是到Resgister.java的。它能跳转但是页面一片空白。导航栏变成http://localhost:8080/JSPExample/registerServlet

和第一点一样,你要确定是跳转到对应的servlet里面去了,然后判断成功以后要控制他的跳转



如果你使用的是out.write("")那就把你要显示的内容写在里面就OK了,不需用跳转页面了!

#5


引用 3 楼  的回复:
 <servlet>
    <servlet-name>TestServlet1</servlet-name>
    <servlet-class>com.pyh.test.service.TestServlet1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet1</ser……


大概明白你的意思。但是注册后,Resgister.java里面有response.sendRedirect("login.jsp");的,可是它一直停留在http://localhost:8080/JSPExample/registerServlet的空白页面,没有跳转到login.jsp是怎么回事呢?是数据库问题吗?

#6


引用 5 楼  的回复:
引用 3 楼  的回复:

<servlet>
<servlet-name>TestServlet1</servlet-name>
<servlet-class>com.pyh.test.service.TestServlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet1</ser………


debug或者用System.out.println();看看走到哪一步了

数据库的问题的话那他报异常了吗?

#7


相关代码发上来,让大家瞅瞅。。

#8


引用 7 楼  的回复:
相关代码发上来,让大家瞅瞅。。

数据库表:User表(id(int),username(varchar),password(varchar)),lyTable表(id(int),userId(int),date(datetime),title(varchar),conten(varchar))
对应的javaBean
package model;

public class User {
    private int id;
    private String username;
    private String password;
    
    public void setId(int id)
    {
     this.id=id;
    }
    public int getId()
    {
     return id;
    }
    
    public void setUsername(String username)
    {
     this.username=username;
    }
    public String getUsername()
    {
     return username;
    }
    
    public void setPassword(String password)
    {
     this.password=password;
    }
    public String getPassword()
    {
     return password;
    }

}
package model;
import java.sql.*;
public class LyTable {
private int id;
private int userId;
private Date date;
private String title;
private String conten;

public void setId(int id)
{
this.id=id;
}
public int getId()
{
return id;
}

public void setUserId(int userId)
{
this.userId=userId;
}
public int getUserId()
{
return userId;
}

public void setDate(Date date)
{
this.date=date;
}
public Date getDate()
{
return date;
}

public void setTitle(String title)
{
this.title=title;
}
public String getTitle()
{
return title;
}

public void setConten(String conten)
{
this.conten=conten;
}
public String getContent()
{
return conten;
}
}


login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <title>简易留言板</title>
  </head>
  
  <body  bgcolor="#E3E3E3">
  <form action="mainServlet" method="post">
  <table>
  <caption>用户登录</caption>
       <tr>
        <td>登录名:</td>
        <td>
           <input type="text" name="username" size="20"/>
        </td>
       </tr> 
       <tr>
        <td>密码:</td>
          <td>
           <input type="password" name="pwd" size="20"/>
          </td>
       </tr>
  </table>
  <input type="submit" value="登录"/>
  <input type="reset" value="重置"/>
  </form>
  如果没有注册请单击<a href="register.jsp">这里</a>注册
  </body>
 
</html>



mainServlet.java
package servlet;
import java.io.*;

import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import model.User;
import db.DB;
@SuppressWarnings("serial")
public class MainServlet extends HttpServlet{
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
//设置请求编码
request.setCharacterEncoding("gb2312");
//设置响应编码编码
response.setContentType("gb2312");
//获取JSP页面输入的用户值
String username=request.getParameter("username");
//获得JSP页面输入的密码值
String pwd=request.getParameter("pwd");
//建立DB类对象,使用其中的方法来完成判断
DB db=new DB();
//获得session对象,用来保存信息
HttpSession session=request.getSession();
//先获得user对象,如果是第一次访问该Servlet,用户对象肯定为空。但如果是
//第二次第三次,就不应该判断该用户信息\
User user=(User)session.getAttribute("user");
//这里就是判断,如果用户是第一次进入,调用DB的方法判断
if(user==null)
{
user=db.checkUser(username,pwd);
}
//吧user对象存在session中。
session.setAttribute("user",user);
if(user!=null)
{
//这里根据用户查询,用户不为空,表示用户密码正确,应该去下一个页面
//这里去下一个页面,主页面包含了所有的留言信息,所以要从留言板表中查出来
ArrayList al=db.findLyInfo();
//把查询的信息保存在session中。
session.setAttribute("al",al);
//然后跳转到我们要去的页面
response.sendRedirect("main.jsp");
}

else
{
//如果用户名和密码错误,回到登录界面
//out.write("用户名或密码出错");
response.sendRedirect("login.jsp");
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
 throws ServletException,IOException{
doGet(request,response);
}
}


DB.java
package db;
import java.sql.*;
import java.util.*;
import model.LyTable;
import model.User;
public class DB {
Connection ct;
PreparedStatement pstmt;
//在构造函数中建立与数据库连接,这样在建立DB对象时就连接了数据库
public DB()
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct=DriverManager.getConnection
("jdbc:sqlserver://localhost:1443;databaseName=JSP","sa","123");
}
catch(Exception e)
{
e.printStackTrace();
}
}
//根据uername和password查询用户,查到返回该对象,没有就返回null
public User checkUser(String username,String password)
{
try
{
pstmt=ct.prepareStatement("select * from [userTable] where username=? and password=?");
//必须设置每个 ? 参数的值
pstmt.setString(1,username);
pstmt.setString(2,password);
ResultSet rs=pstmt.executeQuery();
User user=new User();

while(rs.next())
{
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
return user;
}
return null;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
//查询留言信息,返回一个ArrayList
@SuppressWarnings("unchecked")
public ArrayList findLyInfo()
{
try
{
ArrayList al=new ArrayList();
pstmt=ct.prepareStatement("select * from [lyTable]"); 
ResultSet rs=pstmt.executeQuery();

while(rs.next())
{
LyTable ly=new LyTable();
ly.setId(rs.getInt(1));
ly.setUserId(rs.getInt(2));
ly.setDate(rs.getDate(3));
ly.setTitle(rs.getString(4));
ly.setConten(rs.getString(5));
al.add(ly);
}

 return al;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
public String getUserName(int id)
{
String username=null;
try
{
pstmt=ct.prepareStatement("select username from [userTable] where id=?");
pstmt.setInt(1,id);
ResultSet rs=pstmt.executeQuery();
while(rs.next())
{
username=rs.getString(1);
}
return username;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}

public boolean addInfo(LyTable ly)
{
try
{
pstmt=ct.prepareStatement("insert into [lyTable] values(?,?,?,?)");
pstmt.setInt(1,ly.getUserId());
pstmt.setDate(2,ly.getDate());
pstmt.setString(3,ly.getTitle());
pstmt.setString(4, ly.getContent());
pstmt.executeUpdate();
return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}

public boolean insertUser(String username,String pwd)
{
try
{
pstmt=ct.prepareStatement("insert into [userTable] value(?,?)");
pstmt.setString(1, username);
pstmt.setString(2, pwd);
pstmt.executeUpdate();
return true;

}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}
}




相关类在这,谢谢各位大侠了

#9


引用 7 楼  的回复:
相关代码发上来,让大家瞅瞅。。

数据库表:User表(id(int),username(varchar),password(varchar)),lyTable表(id(int),userId(int),date(datetime),title(varchar),conten(varchar))

对应的javaBean
package model;

public class  User {
  private int id;
  private String username;
  private String password;
   
  public void setId(int id)
  {
  this.id=id;
  }
  public int getId()
  {
  return id;
  }
   
  public void setUsername(String username)
  {
  this.username=username;
  }
  public String getUsername()
  {
  return username;
  }
   
  public void setPassword(String password)
  {
  this.password=password;
  }
  public String getPassword()
  {
  return password;
  }

}


package model;
import java.sql.*;
public class  LyTable {
private int id;
private int userId;
private Date date;
private String title;
private String conten;

public void setId(int id)
{
this.id=id;
}
public int getId()
{
return id;
}

public void setUserId(int userId)
{
this.userId=userId;
}
public int getUserId()
{
return userId;
}

public void setDate(Date date)
{
this.date=date;
}
public Date getDate()
{
return date;
}

public void setTitle(String title)
{
this.title=title;
}
public String getTitle()
{
return title;
}

public void setConten(String conten)
{
this.conten=conten;
}
public String getContent()
{
return conten;
}
}



mainServlet.java
package servlet;
import java.io.*;

import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import model.User;
import db.DB;
@SuppressWarnings("serial")
public class MainServlet extends HttpServlet{
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
//设置请求编码
request.setCharacterEncoding("gb2312");
//设置响应编码编码
response.setContentType("gb2312");
//获取JSP页面输入的用户值
String username=request.getParameter("username");
//获得JSP页面输入的密码值
String pwd=request.getParameter("pwd");
//建立DB类对象,使用其中的方法来完成判断
DB db=new DB();
//获得session对象,用来保存信息
HttpSession session=request.getSession();
//先获得user对象,如果是第一次访问该Servlet,用户对象肯定为空。但如果是
//第二次第三次,就不应该判断该用户信息\
User user=(User)session.getAttribute("user");
//这里就是判断,如果用户是第一次进入,调用DB的方法判断
if(user==null)
{
user=db.checkUser(username,pwd);
}
//吧user对象存在session中。
session.setAttribute("user",user);
if(user!=null)
{
//这里根据用户查询,用户不为空,表示用户密码正确,应该去下一个页面
//这里去下一个页面,主页面包含了所有的留言信息,所以要从留言板表中查出来
ArrayList al=db.findLyInfo();
//把查询的信息保存在session中。
session.setAttribute("al",al);
//然后跳转到我们要去的页面
response.sendRedirect("main.jsp");
}

else
{
//如果用户名和密码错误,回到登录界面
//out.write("用户名或密码出错");
response.sendRedirect("login.jsp");
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
doGet(request,response);
}
}


DB.java
package db;
import java.sql.*;
import java.util.*;
import model.LyTable;
import model.User;
public class DB {
Connection ct;
PreparedStatement pstmt;
//在构造函数中建立与数据库连接,这样在建立DB对象时就连接了数据库
public DB()
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct=DriverManager.getConnection
("jdbc:sqlserver://localhost:1443;databaseName=JSP","sa","123");
}
catch(Exception e)
{
e.printStackTrace();
}
}
//根据uername和password查询用户,查到返回该对象,没有就返回null
public User checkUser(String username,String password)
{
try
{
pstmt=ct.prepareStatement("select * from [userTable] where username=? and password=?");
//必须设置每个 ? 参数的值
pstmt.setString(1,username);
pstmt.setString(2,password);
ResultSet rs=pstmt.executeQuery();
User user=new User();

while(rs.next())
{
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
return user;
}
return null;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
//查询留言信息,返回一个ArrayList
@SuppressWarnings("unchecked")
public ArrayList findLyInfo()
{
try
{
ArrayList al=new ArrayList();
pstmt=ct.prepareStatement("select * from [lyTable]"); 
ResultSet rs=pstmt.executeQuery();

while(rs.next())
{
LyTable ly=new LyTable();
ly.setId(rs.getInt(1));
ly.setUserId(rs.getInt(2));
ly.setDate(rs.getDate(3));
ly.setTitle(rs.getString(4));
ly.setConten(rs.getString(5));
al.add(ly);
}

return al;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
public String getUserName(int id)
{
String username=null;
try
{
pstmt=ct.prepareStatement("select username from [userTable] where id=?");
pstmt.setInt(1,id);
ResultSet rs=pstmt.executeQuery();
while(rs.next())
{
username=rs.getString(1);
}
return username;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}

public boolean addInfo(LyTable ly)
{
try
{
pstmt=ct.prepareStatement("insert into [lyTable] values(?,?,?,?)");
pstmt.setInt(1,ly.getUserId());
pstmt.setDate(2,ly.getDate());
pstmt.setString(3,ly.getTitle());
pstmt.setString(4, ly.getContent());
pstmt.executeUpdate();
return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}

public boolean insertUser(String username,String pwd)
{
try
{
pstmt=ct.prepareStatement("insert into [userTable] value(?,?)");
pstmt.setString(1, username);
pstmt.setString(2, pwd);
pstmt.executeUpdate();
return true;

}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}
}

#10


怎么没有下文了呢!

#11


引用 10 楼  的回复:
怎么没有下文了呢!

什么意思?

#12


打断点调试去,看代码看的有点晕,哈哈

#13


web.xml文件呢?
重要的咱不发代码出来 

#14


servlet的使用你是需要每个页面都配置web.xml配置文件的。

#15


引用 13 楼  的回复:
web.xml文件呢?
重要的咱不发代码出来
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <servlet>
   <servlet-name>mainServlet</servlet-name>
   <servlet-class>servlet.MainServlet</servlet-class>
  </servlet>
  <servlet>
   <servlet-name>addServlet</servlet-name>
   <servlet-class>servlet.AddServlet</servlet-class>
  </servlet>
  <servlet>
   <servlet-name>registerServlet</servlet-name>
   <servlet-class>servlet.RegisterServlet</servlet-class>
  </servlet>
  
    <servlet-mapping>
   <servlet-name>mainServlet</servlet-name>
   <url-pattern>/mainServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
   <servlet-name>addServlet</servlet-name>
   <url-pattern>/addServlet</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
   <servlet-name>registerServlet</servlet-name>
   <url-pattern>/registerServlet</url-pattern>
  </servlet-mapping>
</web-app>

#16


引用 14 楼  的回复:
servlet的使用你是需要每个页面都配置web.xml配置文件的。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <servlet>
   <servlet-name>mainServlet</servlet-name>
   <servlet-class>servlet.MainServlet</servlet-class>
  </servlet>
  <servlet>
   <servlet-name>addServlet</servlet-name>
   <servlet-class>servlet.AddServlet</servlet-class>
  </servlet>
  <servlet>
   <servlet-name>registerServlet</servlet-name>
   <servlet-class>servlet.RegisterServlet</servlet-class>
  </servlet>
  
    <servlet-mapping>
   <servlet-name>mainServlet</servlet-name>
   <url-pattern>/mainServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
   <servlet-name>addServlet</servlet-name>
   <url-pattern>/addServlet</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
   <servlet-name>registerServlet</servlet-name>
   <url-pattern>/registerServlet</url-pattern>
  </servlet-mapping>
</web-app>

#17


<servlet-class>servlet.MainServlet</servlet-class>这个是你的包名加类名?

#18


引用 17 楼 xuanyuan5201314 的回复:
<servlet-class>servlet.MainServlet</servlet-class>这个是你的包名加类名?


恩恩,是

#19


xml配置了?

#20


引用 17 楼 xuanyuan5201314 的回复:
<servlet-class>servlet.MainServlet</servlet-class>这个是你的包名加类名?
你使用
RequestDispatcher dispatcher=
request.getRequestDispatcher("login.jsp");
dispatcher.forward(request,response);这个方式试一下。

#21


求围观,也是这个问题!!

#22


lz把整个程序发来我看哈. JSP+Servlet+JavaBean做的留言板,在登录界面跳转不到下一个界面

#23


request.getRequestDispatcher("/main.jsp").forward(request, response); 

#24


一个个为了分这么多代码都能全整出来,你是不是那个servlet url的配置和放文件的包名有冲突的

#25


应该是两种原因吧。1:web.xml 没配置 2:servlet 没有配置跳转到jsp显示

#26


用注解不就好了吗,写那么多干嘛