老师

发布时间 2023-11-27 18:27:40作者: 饿死的冏猫

1、访问一个Servlet,实现以下功能:
(1)如果是第一次访问,则提示:您好,欢迎您首次访问。
(2)如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串。

@WebServlet("/cookieTest")
public class CookieTest extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean flag=false;
response.setContentType("text/html;charset=utf-8");
//response.setHeader("content-type","text/html;charset=utf-8");
Cookie[] cookies = request.getCookies();
if(cookies!=null && cookies.length!=0){
//遍历cookies
for (Cookie cookie : cookies) {
String name = cookie.getName();
if("lastTime".equals(name)){
flag=true;
//不是第一次
//1.响应数据
String value = cookie.getValue();
value=URLDecoder.decode(value,"utf-8");
response.getWriter().write("欢迎回来,您上次的访问时间:"+value);
//2.修改value
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
String str_date = sdf.format(date);
str_date=URLEncoder.encode(str_date,"utf-8");
cookie.setValue(str_date);
cookie.setMaxAge(60602430);
response.addCookie(cookie);
break;
}
}
}
if(cookiesnull||cookies.length0||flag==false){
//1.响应数据
response.getWriter().write("您好欢迎首次访问");
//2.创建cookie对象
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
String str_date = sdf.format(date);
str_date=URLEncoder.encode(str_date,"utf-8");
Cookie cookie=new Cookie("lastTime",str_date);
cookie.setMaxAge(60
602430);
response.addCookie(cookie);
}
}
}

2、访问带有验证码的登录页面login.jsp,实现以下功能:
(1)如果用户名和密码输入有误,跳转到登录页面,提示:用户名或密码错误
(2)如果验证码输入有误,跳转到登录页面,提示:验证码错误
(3)如果用户名、密码、验证码全部输入正确,则跳转到主页success.jsp,显示:用户名,您好
(1)login.jsp代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

登录
用户名:
密码:
验证码:
<%=request.getAttribute("msgError")==null?"":request.getAttribute("msgError")%>
<%=request.getAttribute("codeError")==null?"":request.getAttribute("codeError")%>
(2)success.jsp的代码如下: <%@ page contentType="text/html;charset=UTF-8" language="java" %> 登录成功 <%=request.getSession().getAttribute("username")%>,您好 (3)LoginServlet.java代码如下: @WebServlet("/loginServlet") public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String username = request.getParameter("username"); String password = request.getParameter("password"); String checkCode = request.getParameter("checkCode"); HttpSession session = request.getSession(); String code=(String)session.getAttribute("Code"); session.removeAttribute("Code"); if(checkCode.equalsIgnoreCase(code)){ //验证码正确 if("admin".equals(username)&&"123".equals(password)){ //用户名密码正确 session.setAttribute("username",username); response.sendRedirect(request.getContextPath()+"/success.jsp"); } else{ request.setAttribute("msgError","用户名或密码错误"); RequestDispatcher dispatcher = request.getRequestDispatcher("/login.jsp"); dispatcher.forward(request,response); } } else{ //验证码错误 request.setAttribute("codeError","验证码错误"); RequestDispatcher dispatcher = request.getRequestDispatcher("/login.jsp"); dispatcher.forward(request,response); } } } (4)checkCode.java代码如下: @WebServlet("/checkCode") public class CheckCode extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int width=100,height=50; BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); g.setColor(Color.pink); g.fillRect(0,0,width,height); g.setColor(Color.blue); g.drawRect(0,0,width-1,height-1);
    String s="23456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    Random r=new Random();
    StringBuilder sb=new StringBuilder();

    for (int i = 1; i <=4 ; i++) {
        int index=r.nextInt(s.length());
        char ch=s.charAt(index);
        sb.append(ch);
        g.drawString(ch+"",width/5*i,height/2);
    }
    String code=sb.toString();
    HttpSession session = request.getSession();
    session.setAttribute("Code",code);
    g.setColor(Color.yellow);
    for (int i = 1; i <=10 ; i++) {
        int x1=r.nextInt(width);
        int x2=r.nextInt(width);
        int y1=r.nextInt(height);
        int y2=r.nextInt(height);
        g.drawLine(x1,y1,x2,y2);
    }
    ImageIO.write(image,"jpg",response.getOutputStream());
}

}

3、使用Servlet处理HTTP请求(15分)
编写一个Servlet,用于处理客户端的GET请求,并将请求参数显示在页面上。
要求:
1.创建一个名为MyServlet的Servlet类,继承自HttpServlet类。
2.重写doGet方法,处理GET请求。
请求参数内容:用户名username=考生拼音名全拼,例如,lihuawei
密码password=10位学号,例如,2236140506
请求格式为:http://localhost:8080/项目名称/MyServlet?name=lihuawei&password=2236140506
3.在doGet()方法中,获取请求参数,并将其显示在页面上。
4.使用web.xml配置的方式:配置web.xml文件,将Servlet与URL映射。
import java.io.IOException;
import java.io.PrintWriter;

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("/MyServlet")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    // 获取请求参数
    String username = request.getParameter("name");
    String password = request.getParameter("password");

    // 将参数显示在页面上
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Servlet Example</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>用户名: " + username + "</h1>");
    out.println("<h1>密码: " + password + "</h1>");
    out.println("</body>");
    out.println("</html>");
}

}

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>your.package.name.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
</servlet-mapping>