servlet的一个小项目(六)

servlet的一个小项目(六)

ps:这里的代码用到了韩顺平老师的servlet代码。

//欢迎界面
//用户验证servlet


//登录界面

package com.tsinghua;

import javax.servlet.http.*;

import java.io.*;
import java.sql.*;
import java.util.*;

public class Wel extends HttpServlet {


    //处理get请求
    //req: 用于获得客户端(浏览器)的信息
    //res: 用于向客户端(浏览器)返回信息
    public void doGet(HttpServletRequest req,HttpServletResponse res){

        //业务逻辑 
        Connection ct=null;
        PreparedStatement ps=null;
        ResultSet rs=null;

        //业务逻辑 

        try {


            //从session中得到用户名
            HttpSession hs=req.getSession(true);
            String myName=(String)hs.getAttribute("uname");
            String name="";
            String passwd="";
            if(myName==null){

                //如果session中没有用户信息,再看看有没有cookie信息
                //从客户端得到所有cookie信息
                Cookie [] allCookies=req.getCookies();

                int i=0;
                //如果allCookies不为空...
                if(allCookies!=null){

                    //从中取出cookie
                    for(i=0;i<allCookies.length;i++){

                        //依次取出
                        Cookie temp=allCookies[i];

                        if(temp.getName().equals("myname")){

                            //得到cookie的值
                            name=temp.getValue();
                        }
                        else if(temp.getName().equals("mypasswd")){
                            passwd=temp.getValue();
                        }

                    }

                    System.out.println ("myname="+name+" pas="+passwd);
                    if(!name.equals("")&&!passwd.equals("")){

                        //到logincl去验证
                        res.sendRedirect("loginCl?usrename="+name
                        +"&passwd="+passwd);
                        return;
                    }

                }

                //返回登录界面
                res.sendRedirect("login?info=error1");
                return ;
            }

            //解决中文乱码
            res.setCharacterEncoding("gbk");

            PrintWriter pw=res.getWriter();
            pw.println("<body bgcolor=#CED3FF>");

            pw.println("<img src=imgs/1.GIF>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;欢迎您:"+myName+"<img src=imgs/me.gif><hr><center>");

            pw.println("<h1>管理用户</h1>");

            //做个超链接 
            pw.println("<br><a href=login>返回重新登录</a>");


            //添加网页访问次数的功能


            //==================分页的功能====================

            int pageSize=3;//一页显示几条记录
            int pageNow=1;//希望显示第几页 


            //动态的接受pageNow
            //这个是网页传递过来的。
            String sPageNow=req.getParameter("pageNowok");

            if(sPageNow!=null){

                pageNow=Integer.parseInt(sPageNow);

            }


            //调用UserBeanCl
            UserBeanCl ubc=new UserBeanCl();
            ArrayList al=ubc.getResultByPage(pageNow,pageSize);


            pw.println("<table border=1>");
            pw.println("<tr bgcolor=pink><th>id</th><th>name</th><th>passwd</th><th>mail</th><th>grade</th><th>修改用户</th><th>删除用户</th></tr>");

            //定义一个颜色数组
            String [] mycol={"silver","pink"};

            //这个循环过后,ResultSet就华丽的传到ArrayList中了。
            //注意,这里的al.size()的值就是page中的条目数量。
            //因为是现显示现查,所以那个传过来的rs就应该是pagecount的条目数。
            //在UserBeanCl这个文件中,有这样一行:
            //ps=ct.prepareStatement("select top "+pageSize+" * from users where userId not in 
            //(select top "+pageSize*(pageNow-1)+" userId from users)");
            //上面这这个查询的语句是除去(除去当前页),之前的页数*条目数的条目,我再拿出来pagesize个条目
            //所以现在的结果集也就pagesize个条目。
            //控制每页显示的条目是在这里


            for(int i=0;i<al.size();i++){

                UserBean ub=(UserBean)al.get(i);
                pw.println("<tr bgcolor="+mycol[i%2]+">");
                pw.println("<td>"+ub.getUserId()+"</td>");
                pw.println("<td>"+ub.getUserName()+"</td>");
                pw.println("<td>"+ub.getPasswd()+"</td>");
                pw.println("<td>"+ub.getMail()+"</td>");
                pw.println("<td>"+ub.getGrade()+"</td>");
                pw.println("<td><a href=Update?uId="+ub.getUserId()+"&uName="+ub.getUserName()+"&uPass="+ub.getPasswd()+"&uMail="+ub.getMail()+"&uGrade="+ub.getGrade()+">修改用户</a></td>");
                //你看这里,点击修改用户之后,信息是这么直接传过去的。
                //因为是要修改,所以值传递要多一点。
                pw.println("<td><a href=DelUserCl?userid="+ub.getUserId()+" onclick=\"return window.confirm('确认删除')\">删除用户</a></td>");
                pw.println("</tr>");
                //删除用户就简单的多了,直接传递一个id,弹出一个确认的框就行。

            }

            pw.println("</table>");

            //上一页
            //下面几行是控制页码的超链接。
            if(pageNow!=1)
            pw.println("<a href=wel?pageNowok="+(pageNow-1)+">上一页</a>");

            //显示超链接
            for (int i=pageNow; i<=pageNow+4; i++){

                pw.println("<a href=wel?pageNowok="+i+">"+i+"</a>");    
            }

            int pageCount=ubc.getPageCount();
            //下一页 
            if(pageNow!=pageCount)
            pw.println("<a href=wel?pageNowok="+(pageNow+1)+">下一页</a><br>");
            pw.println("该网页被访问了"+this.getServletContext().getAttribute("visitTimes").toString()+"次<br>");

            //指定跳转到某页
            //这里实际是一个表单
            //你需要考虑问题:输入的页数过大?,输入不是数值又怎么办?
            pw.println("<form action=wel>");
            pw.println("<input type=text name=pageNowok>");
            pw.println("<input type=submit value=go>");
            pw.println("</from><br>");

            pw.println("您的ip="+req.getRemoteAddr()+"<br>");
            pw.println("您的机器名="+req.getRemoteHost()+"<br>");
            pw.println("</center><hr><img src=imgs/mylogo.gif>");
            pw.println("</body>");

        }
        catch (Exception ex) {

            ex.printStackTrace();
        }
    }

    //处理post请求
    //req: 用于获得客户端(浏览器)的信息
    //res: 用于向客户端(浏览器)返回信息
    public void doPost(HttpServletRequest req,HttpServletResponse res){

        this.doGet(req,res);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的学生爱好调查问卷的示例,使用Java Servlet和JSP技术: 1. 创建一个名为StudentSurvey的Java Web项目。 2. 创建一个名为SurveyServletServlet类,用于处理用户提交的问卷数据。在doPost()方法中,从请求参数中获取学生姓名、年级、性别和爱好等数据,并将其保存到数据库中。 ```java @WebServlet("/survey") public class SurveyServlet extends HttpServlet { private static final String JDBC_URL = "jdbc:mysql://localhost:3306/student_survey?useSSL=false&serverTimezone=UTC"; private static final String JDBC_USER = "root"; private static final String JDBC_PASSWORD = "password"; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String name = req.getParameter("name"); String grade = req.getParameter("grade"); String gender = req.getParameter("gender"); String[] hobbies = req.getParameterValues("hobby"); try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD)) { String sql = "INSERT INTO survey (name, grade, gender, hobby) VALUES (?, ?, ?, ?)"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1, name); stmt.setString(2, grade); stmt.setString(3, gender); stmt.setString(4, String.join(",", hobbies)); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } resp.sendRedirect("result.jsp"); } } ``` 3. 创建一个名为survey.jsp的JSP页面,用于展示问卷表单。在表单中包括学生姓名、年级、性别和爱好等字段。 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>学生爱好调查问卷</title> </head> <body> <h1>学生爱好调查问卷</h1> <form method="post" action="survey"> <p>姓名:<input type="text" name="name"></p> <p>年级: <select name="grade"> <option value="1">一年级</option> <option value="2">二年级</option> <option value="3">三年级</option> <option value="4">四年级</option> <option value="5">五年级</option> <option value="6">年级</option> </select> </p> <p>性别: <input type="radio" name="gender" value="男">男 <input type="radio" name="gender" value="女">女 </p> <p>爱好: <input type="checkbox" name="hobby" value="篮球">篮球 <input type="checkbox" name="hobby" value="足球">足球 <input type="checkbox" name="hobby" value="游泳">游泳 <input type="checkbox" name="hobby" value="音乐">音乐 <input type="checkbox" name="hobby" value="阅读">阅读 </p> <p><input type="submit" value="提交"></p> </form> </body> </html> ``` 4. 创建一个名为result.jsp的JSP页面,用于展示问卷提交成功的页面。在页面中显示提交成功的消息,并提供返回首页的链接。 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>学生爱好调查问卷</title> </head> <body> <h1>学生爱好调查问卷</h1> <p>问卷提交成功!</p> <p><a href="survey.jsp">返回首页</a></p> </body> </html> ``` 5. 在项目的web.xml文件中配置Servlet和JSP的映射关系。 ```xml <web-app> <servlet> <servlet-name>SurveyServlet</servlet-name> <servlet-class>com.example.StudentSurvey.SurveyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SurveyServlet</servlet-name> <url-pattern>/survey</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>survey.jsp</welcome-file> </welcome-file-list> </web-app> ``` 6. 运行项目,访问http://localhost:8080/StudentSurvey/survey.jsp,即可开始填写问卷。提交问卷后,将跳转到result.jsp页面,显示提交成功的消息。提交的数据将保存到MySQL数据库中,可以使用MySQL客户端工具查看。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值