web作业记录(9.30)

题目

利用NetBeans新建一个基于JavaEE7.0规范的Web应用程序项目,之后完成以下任务:

(1)利用向导建立一个Servlet,将其对应的页面名称设置为index.shtm,并设法将建立的Web应用程序的默认页面设置为该Servlet生成的页面。

(2)修改上述Servlet中的代码,使其生成的页面中包含一个网页链接,点击该链接,将转入本项目中由向导生成的index.html页面。

(3)再在项目中新建一个Servlet,然后修改index.html页面中的代码,为其添加一个表单,该表单包含一个文本框和一个提交按钮,当用户点击提及按钮时,将调用建立的Servlet,对用户输入的信息进行回应。

用户可以输入如下问题: 

①你是谁

 Servlet应自动将用户转移到一个能够显示你的姓名、学号、班级及照片的页面。

②现在几点

Servlet回应当前的时间,格式为“*****年**月**日  **小时**分**秒”

③我从哪里来

Servlet回应用户所在计算机的IP地址

④我到那里去

Servlet应根据用户的浏览器类型,回应一个页面,如果用户的浏览器是IE、火狐、谷歌,则该页面应显示“点此进入”。当用户点击此文本时,应转入对应浏览器开发商的网站,如是IE,则网址应为http://www.microsoft.com,火狐则为http://www.mozilla.org,谷歌的则为http://www.google.cn。如果用户的浏览器不在上述范围之内,则在页面显示“百度一下吧”,用户点击后转入http://www.baidu.com(注:其他浏览器可用Opera作测试,下载网址是http://www.opera.com)。在上述的链接的“点此进入”的文字下面,还要有一个“返回”的文本,用户如果点击此文本,将返回index.html页面。

⑤对于其他问题,Servlet一律回应“不知道!”。

作答

使用Netbeans15和Tomcat9

 IndexServlet.java

package web;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class IndexServlet extends HttpServlet {

   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try ( PrintWriter out = response.getWriter()) {
         
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet IndexServlet</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1><a href=index.html>点此</a>转入问题首页 </h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        processRequest(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        processRequest(req, resp);
    }

   

}

QuestionServlet.java

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet(name = "QuestionServlet", urlPatterns = {"/QuestionServlet"})
public class QuestionServlet extends HttpServlet {

  
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //获取问题
        request.setCharacterEncoding("UTF-8");
        String q=request.getParameter("q");
        
        if("你是谁".equals(q)){
            response.sendRedirect("my.html");
            return;
        }else if("现在几点".equals(q)){
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            Date date = new Date(System.currentTimeMillis());
            SimpleDateFormat time = new SimpleDateFormat("yyyy年MM月dd日-HH时mm分ss秒");
            out.println(time.format(date));
            return;
        }else if("我从哪里来".equals(q)){
            String remoteIp=request.getRemoteAddr();
            response.getWriter().print(remoteIp);
            return ;
        }else if("我到哪里去".equals(q)){
            String header = request.getHeader("User-Agent");
            response.setContentType("text/html;charset=GBK");
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();	
            if (header.toLowerCase().contains("msie")) {
                out.println("<p><a href=http://www.microsoft.com>点此</a>点此进入 </p>");
            } else if (header.toLowerCase().contains("firefox")) {
                out.println("<div><a href=http://www.mozilla.org>点此</a>点此进入 </div>");
            } else if (header.toLowerCase().contains("chrome")) {
                out.println("<div><a href=http://www.google.cn>点此</a>点此进入 </div>");
            } else {
                out.println("<div><a href=http://www.baidu.com>百度一下吧</a> </div>");
            }
             out.println("<div><a href=index.html>返回</a> </div>");   
            return;
        }else{
            response.setContentType("text/html;charset=GBK");
            response.setContentType("text/html");
            response.getWriter().print("不知道!");
        }
        response.setContentType("text/html;charset=UTF-8");
        try ( PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet QuestionServlet</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet QuestionServlet at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <servlet>
        <servlet-name>IndexServlet</servlet-name>
        <servlet-class>web.IndexServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>IndexServlet</servlet-name>
        <url-pattern>/index.shtml</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.shtml</welcome-file>
    </welcome-file-list>
</web-app>

index.html

<!DOCTYPE html>
<html>
    <head>
        <title>问题回答</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>请输入你的问题</div>
        <form action="QuestionServlet" method="POST">
            <input type="text" name="q" value="" />
            <input type="submit" value="确定" />
        </form>
    </body>
</html>

my.html

<!DOCTYPE html>
<html>
    <head>
        <title>问题回答</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>姓名:张三</div>
        <div>学号:29102930</div>
        <div>班级:法外狂徒班</div>
        <img src="照片.png" alt="照片" width="200" height="200">
    </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值