victory的博客

长安一片月,万户捣衣声

0%

登录成功后网页头部显示用户名

要实现登录成功后在网页头部显示用户名,只需在登录成功后将当前用户存入session,然后在登录页面使用jstl语法判断用户状态,
登录成功则显示用户名。

  1. 在UserServlet.java中添加将当前用户加入session中的代码
    public void login(HttpServletRequest request, HttpServletResponse response) {
     ......
     if(user!=null) {
         HttpSession session = request.getSession();
         session.setAttribute("user", user);//将当前用户(User)加入session
         
         request.getRequestDispatcher("/index.jsp").forward(request, response);
     }
     ......
    
    }
  2. 修改header.jsp代码
    使用jstl代码判断当前用户是否为空,若为空,显示登录注册链接,若不为空显示用户名等信息。
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<!-- 登录 注册 购物车... -->
<div class="container-fluid">
    <div class="col-md-4">
        <img src="img/logo2.png" />
    </div>
    <div class="col-md-5">
        <img src="img/header.png" />
    </div>
    <div class="col-md-3" style="padding-top:20px">
        <ol class="list-inline">
            <c:if test="${empty user}">
                <li><a href="login.jsp">登录</a></li>
                <li><a href="register.jsp">注册</a></li>
            </c:if>
            <c:if test="${not empty user}">
                <li>${user.username}</li>
                <li><a href="cart.jsp">购物车</a></li>
                <li><a href="order_list.jsp">我的订单</a></li>
            </c:if>
        </ol>
    </div>
</div>

<!-- 导航条 -->
<div class="container-fluid">
    <nav class="navbar navbar-inverse">
        <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">首页</a>
            </div>

            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="product_list.htm">手机数码<span class="sr-only">(current)</span></a></li>
                    <li><a href="#">电脑办公</a></li>
                    <li><a href="#">电脑办公</a></li>
                    <li><a href="#">电脑办公</a></li>
                </ul>
                <form class="navbar-form navbar-right" role="search">
                    <div class="form-group">
                        <input type="text" class="form-control" placeholder="Search">
                    </div>
                    <button type="submit" class="btn btn-default">Submit</button>
                </form>
            </div>
        </div>
    </nav>
</div>
  1. 效果

jstl标签

  1. jstl标签(替换jsp页面中的if、forjava代码)
  2. jstl标签测试
<%@page import="java.util.HashMap"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        request.setAttribute("a", 1);
        request.setAttribute("b", 4);
        
        //在request域中设置复杂数据(ArrayList)
        ArrayList<String> arr = new ArrayList<String>();
        arr.add("zhangsan");
        arr.add("lisi");
        arr.add("wangwu");
        request.setAttribute("list", arr);
        
        //在request域中设置复杂数据(HashMap)
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("a", "A");
        map.put("b", "B");
        map.put("c", "C");
        request.setAttribute("map", map);
    %>
    <c:if test="${a>b}">
        <font color="red">a大于b</font><br>
    </c:if>
    
    <c:if test="${a<b}">
        <font color="green">a大于b</font><br>
    </c:if>
    
    <c:forEach begin="1" end="10" step="1" var="n">
        ${n}
    </c:forEach><br>
    
    <c:forEach items="${list}" var="s">
        ${s}
    </c:forEach><br>
    
    <c:forEach items="${map}" var="en">
        ${en.key}
        ${en.value}<br>
    </c:forEach>
</body>
</html>s
  1. 效果

el表达式

  1. el表达式
  2. 测试el表达式
<%@page import="com.oracle.bean.Product"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        //在request域中设置简单数据
        request.setAttribute("a", 1);
        request.setAttribute("b", 1);
        
        //在request域中设置复杂数据(ArrayList)
        ArrayList<String> arr = new ArrayList<String>();
        arr.add("zhangsan");
        arr.add("lisi");
        arr.add("wangwu");
        request.setAttribute("list", arr);
        
        //在request域中设置复杂数据(HashMap)
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("a", "A");
        map.put("b", "B");
        map.put("c", "C");
        request.setAttribute("map", map);
        
        //在request域中设置复杂数据(JavaBean)
        Product p = new Product();
        p.setId(1);
        p.setPname("黄瓜");
        p.setPrice(15.2);
        p.setPdesc("黄瓜好吃,香");
        request.setAttribute("p", p);
    %>
    
    <%=request.getAttribute("a") %>
    
    ${a+b}<br>
    
    ${list[0]}<br>
    
    ${map.a}<br>
    
    ${p.pname}<br>
</body>
</html>
  1. 效果

jsp

  1. 什么是jsp?
    java server pages(java服务器页面),本质上就是一个servlet,运行在服务器端.
  2. 作用
    可以在jsp嵌入java代码,动态展示数据
  3. jsp的特定内容
  4. 1 jsp的脚本
    <%…%>:写java程序片段
    <%=…%>:输出表达式(输出表达式不能以分号结尾)
  5. 2 jsp的指令
    (1)包含在.jsp文件的头部,声明当前页面的一些属性和行为
<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>

(2)taglib:导入标签库
s
<%@taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core" %>
导入标签库后就可以使用jstl标签替换jsp中的if、for表达式。更多见jstl标签
3.3 jsp中的域对象
request:当前请求
session:当前会话
3.4 jsp的动作标签
语法:<jsp:动作标签 属性=”值”>
例如: 将其他页面包含到当前页面

<jsp:include page="/.."></jsp:inclue>
阅读全文 »