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