我是 jsp+servlet+service+dao
servlet里 只获取了 登录名和密码
我想用户登录后 显示他们之前注册的 昵称之类的信息
这要怎么操作?
创建实体实体去定义类然后做一个让用户显示之前注册的昵称之类的信息前端获取,servlet调转页面把参数带过去,,前端ognl获取就可以了
这个我之前做过类似的,数据库方面定义两个表,一个是user表,储存帐号密码等关键信息,另一个是userdetail表,储存昵称年龄等等详细信息,通过第一个表id去查第二个表,获取昵称等信息,另外不建议使用外键,用代码实现比较好。
首先注册的用户信息都有存数据库的表中,对吧(暂用t_user(name,passwd,age,gender,other))
前台获取数据:
你描述的Servlet 获取到的name和passwd,是对应的用户登录功能,就是说数据是从前台页面获取的
登录输入name,passwd,你后台Servlet 获取请求参数用户名和密码
后台获取数据:
你现在要在登录后进入的页面显示用户的其他信息,那这个信息需要去查询数据表,是吧
你要查当前用户的所在那行的记录,那现在拿到的name,passwd就当做sql语句的查询条件去查询表
select * from t_user where name = 'Servlet获取到的name' and passwd = 'Servlet获取到的passwd'
语句你写好后,会连接数据库吧,执行查询语句,获取查询结果显示出来。
你要的操作就是通过前台拿到的条件去查询后台的记录,然后获取数据显示出来
写了一个简单的user 你可以参考一下:
重新发一下:
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
用户名: | |
密码: | |
user.java
package user.bean;
public class User {
private String id;
private String name;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Dao层:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import user.bean.User;
import user.util.JDBCUtil;
public class UserDao {
public List<User> returnList(String admin){
//建立导出的list
List<User> list = new ArrayList<User>();
try {
//查询数据库中为登录admin的用户
String sql = "select * from users where name = '"+admin+"'";
ResultSet rs = JDBCUtil.returnResult(sql);
if(rs!=null) {
while(rs.next()) {
User u = new User();
u.setId(rs.getString("id"));
u.setName(rs.getString("name"));
u.setPassword(rs.getString("password"));
list.add(u);
}
}
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}
servlet层:
package user.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import user.bean.User;
import user.dao.UserDao;
@WebServlet("/login")
public class UserServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String admin = req.getParameter("admin");
UserDao ud = new UserDao();
//将admin传入Dao层,从数据库取出对应的数据
List<User> list = ud.returnList(admin);
//设置session 将list放入session中 传给jsp页面
HttpSession session = req.getSession();
session.setAttribute("list", list);
//重定向到下一个页面
resp.sendRedirect("main.jsp");
}
}
main.jsp
<%@page import="user.bean.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.util.*"%>
<%@page import="user.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
用户id | 用户名 | 用户密码 |
JDBCUtil
package user.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class JDBCUtil {
private static Connection con=null;
private static ResultSet rs = null;
//建立数据库连接
public static Connection getCon() throws Exception {
if(con==null) {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/db");
con = ds.getConnection();
}
return con;
}
//得到查询结果集并传给下一个页面
public static ResultSet returnResult(String sql) {
try {
con = getCon();
PreparedStatement ps = con.prepareStatement(sql);
rs = ps.executeQuery();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
public static void close() throws Exception {
con.close();
}
}
最后记得退出的时候 再调用close()方法关资源