javaweb-jsp编程例题

使用监听器技术,实现统计网址登录的在线人数和在线用户列表

1.创建一个userCount监听类

public class userCount implements HttpSessionListener {

    // 用于统计在线人数
    private int count = 0;

    //创建session监听,一旦创建session就触发一次这个事件
    @Override
    public void sessionCreated(HttpSessionEvent se) {
            // session对象创建时count变量加1
            count++;
            // 获取容器上下文对象
            ServletContext context = se.getSession().getServletContext();
            // 重置计数器值
            context.setAttribute("count", new Integer(count));
        }

    //销毁session监听,一旦销毁session就会触发一次这个事件
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        // session对象销毁时count变量减1
        count--;
        ServletContext context = se.getSession().getServletContext();
        context.setAttribute("count", new Integer(count));
    }
}

2.将上面的类在web.xml中配置好

  <!--注册监听器-->
    <listener>
        <listener-class>alva.userCount</listener-class>
    </listener>

3.显示页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>login</title>
  </head>
  <body>  
     <h2>当前在线人数: <span><%=application.getAttribute("count")%> </span></h2>
    </body>  
</html>

效果:

 收获:

  理解session是什么时候创建的?

   并不是当用户向服务器发起请求时,这个session便会立刻建立起来,注意上的se.getSession(),如果当前没有session,则会立刻建立一个session;如果有session则返回当前session

编写JSP程序使用application 内置对象存储当前页面被访问的次数并输出到页面

  这是一个页面计数器

1.制作一个计数页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>计数页面</title>
</head>
<body>
 <%
     int count = 1;//初始化次数
     String count_name = request.getParameter("count_name");
     try{
         count = Integer.parseInt(application.getAttribute(count_name).toString());
     }catch (Exception e){}
     out.println("此页面访问量为"+count);
     count++;//访问一次就增加一次
     application.setAttribute("count_name",new Integer(count));//再将新的值存入参数中
 %>
</body>
</html>

2.在主页面引入计数页面实现展示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>login</title>
  </head>
  <body>  
     <h2>使用计数页面来展示访问次数</h2>
     <%--  引入--%>
     <jsp:include page="pageCount.jsp">
       <jsp:param name="count_name" value="index"/>
     </jsp:include>
    
    </body>  
</html>

编写jsp页面或servlet实现用户登录功能

这里使用jsp很简单

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>login</title>
  </head>
  <body>  
     <h2>登录</h2>
    <form action="hello.jsp" method="post">
        用户名: <input type="text" name="username"> <br>
        密码: <input type="password" name="password"> <br>
        <input type="submit">
    </form>
    </body>  
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>hello</title>
</head>
<body>
   你好! <%=request.getParameter("username")%>
</body>
</html>

请在JSP页面中完成1至50内偶的和,要求在声明脚本中定义求和方法,使用表达式输出结果

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>login</title>
  </head>
  <body>  
     <h2>请在JSP页面中完成1至50内偶的和,要求在声明脚本中定义求和方法,使用表达式输出结果</h2>
     <%!
         public int sum = 0;
         public int getsum(){
             for (int i = 2; i <=50 ; i+=2) {
                 sum += i;
             }
             return sum;
         }
     %>
    1至50内偶的和为:<%=getsum()%>
    </body>  
</html>

 

编写JSP页面分别显示1至5每个数字的阶乘,要求在声明脚本中定义求阶乘的方法

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>login</title>
  </head>
  <body>  
     <h2>编写JSP页面分别显示1至5每个数字的阶乘,要求在声明脚本中定义求阶乘的方法</h2>
     <%!

         public int getjiechen(int num){
             int jiechen = 1;
             for (int i = num; i >=1 ; i--) {
                 jiechen *=i;
             }
             return jiechen;
         }
     %>
    1的阶乘:<%=getjiechen(1)%> <br>
    2的阶乘:<%=getjiechen(2)%> <br>
    3的阶乘:<%=getjiechen(3)%> <br>
    4的阶乘:<%=getjiechen(4)%> <br>
    5的阶乘:<%=getjiechen(5)%> <br>
    </body>  
</html>

   

    创建一个名为Studentjava的Bean,用来描述学生的信息,分别是姓名,学号,年龄在一个名为studentisp的页面中输入姓名,工号,身高,体重提交到servlet中对Student对象进行实例化。要求编写Student类studentisp文件,servlet类

student类

public class Student {
    private String name;//姓名
    private String stuId;//学号
    private int age;//年龄

    public Student() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStuId() {
        return stuId;
    }

    public void setStuId(String stuId) {
        this.stuId = stuId;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

student的servlet类,用来接收参数,初始化student类并且在页面中显示

public class StudentServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       String name = req.getParameter("name");
       String stuId = req.getParameter("stuId");
       Integer age = Integer.valueOf(req.getParameter("age"));
       Student student = new Student();
       student.setName(name);
       student.setStuId(stuId);
       student.setAge(age);
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.write("学生姓名"+student.getName()+"=====");
        writer.write("学生工号"+student.getStuId()+"=====");
        writer.write("学生年龄"+student.getAge()+"=====");
    }
}

配置这个servlet

    <servlet>
        <servlet-name>Student</servlet-name>
        <servlet-class>alva.StudentServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Student</servlet-name>
        <url-pattern>/student</url-pattern>
    </servlet-mapping>

输入参数的页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>login</title>
  </head>
  <body>  
     <h2>输入信息,进行提交</h2>
  <form action="http://localhost:8099/work1/student" method="get">
      姓名:<input type="text" name="name"><br/>
      工号:<input type="text" name="stuId"><br/>
      年龄:<input type="text" name="age" ><br/>
      <input type="submit">
  </form>
    </body>  
</html>

  整个的流程就是先输入参数,然后提交到servlet类中,初始化student类的属性值,之后再回显

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值