今天更是进一步理解了对象的含义。是的,楼主是条单身狗。但是我还是更深一步的理解了面向对象中对象的含义呀(呸,卖什么萌。。。。。。)。
首先做个简单的例子,jsp页面偏爱于el标签。el标签真的很舒服的说,虽然学的不行。
login的servlert
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String uname = request.getParameter("username");
String pword = request.getParameter("password");
List list = Db.getAll();//这里并没有新建一个对象,但是下面static定义的内容已经加载了
for(UserBean u: list)
{
if(u.getUname().equals(uname) && u.getPword().equals(pword))
{
request.getSession().setAttribute("user", u);
response.sendRedirect("index.jsp");
return;
}
out.write("erererererer");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
//新建一个类,类里先放一些用户的信息,方便登录验证,暂时替代了SQL的相同部分
class Db
{
public static List list = new ArrayList();
//方便在没有创建对象的情况下来进行调用(方法/变量)。
static{
list.add(new UserBean("a","1"));
list.add(new UserBean("b","1"));
list.add(new UserBean("c","1"));
}
public static List getAll()
{
return list;
}
}
登录成功的页面
欢迎您,${user.uname}
退出登录
要知道session在生成了之后会一直存在的,所以在其他的页面也都可以直接显示出来登录名
欢迎您,${user.uname}
当然具体会有一些操作session的方法和内容,这些等待我这个渣渣去学习。
对应的退出servlert
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(false);
if(session == null)
{
response.sendRedirect("index.jsp");
return;
}
session.removeAttribute("user");
response.sendRedirect("index.jsp");
}
对应的userbean
public class UserBean {
private String uname;
private String pword;
public UserBean(String uname,String pword)
{
this.uname = uname;
this.pword = pword;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPword() {
return pword;
}
public void setPword(String pword) {
this.pword = pword;
}
}
当然大多数时候我们需要获取到当前的用户信息,比如当前的用户名,密码。
正常的获取servlert的方法是
HttpSession session =request.getSession();
session.getAttribute("user");
这个时候我们就获取到了user这个对象。为了获取对象中包含的用户名,我们需要强制转换,然后get我们需要的值
((UserBean)session.getAttribute("user")).getUname();
这个过程中,对于面向对象的理解会更好一点。
当然其实有一个方法就不需要这么麻烦了。
在创建session的时候,只把登录名放进去。
if(u.getUname().equals(uname) && u.getPword().equals(pword))
{
request.getSession().setAttribute("username", u.getUname());
response.sendRedirect("index.jsp");
return;
}
然后获取的时候就直接获取
System.out.println(session.getAttribute("username"));
但是实际上,不可能只在session里放一个名字的。