实验十 Servlet(一)
【实验目的】
1.了解Servlet运行原理
2.掌握Servlet实现方式
【实验内容】
1、参考课堂例子,客户端通过login.jsp发出登录请求,请求提交到loginServlet处理。如果用户名和密码相同则视为登录成功,跳转到loginSuccess.jsp页面,显示“欢迎你”+用户名;否则跳转到loginFail.jsp页面,显示“登录失败”,通过超链接返回login.jsp。
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆页面</title>
</head>
<body>
<form action="loginServlet" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required><br>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
<input type="submit" value="登陆">
</form>
</body>
</html>
loginServlet
package servlet;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.IOException;
//Servlet映射
@WebServlet(name = "loginServlet" )
public class loginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
// 获取输入的用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
// 如果用户名和密码相同则登陆成功
if(username.equals(password)){
//将用户名保存到会话中
HttpSession session = request.getSession();
session.setAttribute("username",username);
//跳转到登陆成功页面
response.sendRedirect("loginSuccess.jsp");
} else {
//登录失败,则跳转到登陆失败页面
response.sendRedirect("loginFail.jsp");
}
}
}
loginSuccess.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆成功</title>
</head>
<body>
<h1>欢迎您!${sessionScope.username}</h1>
</body>
</html>
loginFail.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>登陆失败</h1>
<a href="login.jsp">返回登陆页面</a>
</body>
</html>
2、参考课程网站“在Servlet中读取参数”内容,使用ServletConfig检索Servlet的初始化参数,请补充填写以下①-⑥空,并运行ConfigDemoServlet程序,将运行结果截图。
【步骤1】编写ConfigDemoServlet程序,内容如下:
package Servlet;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ConfigDemoServlet extends HttpServlet{
String servletName=null;
ServletConfig config=null;
String email=null;
String telephone=null;
public void init() {
config =_____①________;
servletName = config.getServletName();
email = ________②________________;
telephone =___________ ③_______________;
}
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("Servlet名称:"+servletName+"<br>");
out.println("Email地址:"+email+"<br>");
out.println("电话:"+telephone);
out.println("</body></html>");
}
}
【步骤2】修改web.xml文件,在其中添加下面Servlet定义和初始化参数定义
<servlet>
<servlet-name> ④ </servlet-name>
<servlet-class> ⑤ </servlet-class>
<init-param>
<param-name>email</param-name>
<param-value>hacker@163.com</param-value>
</init-param>
<init-param>
<param-name>telephone</param-name>
<param-value>8899123</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name> ④ </servlet-name>
<url-pattern> ⑥ </url-pattern>
</servlet-mapping>
【步骤3】在浏览器的地址栏中输入下面URL访问该Servlet并截图显示结果:
http://localhost:8080/bookstore/configDemo
ConfigDemoServlet
package servlet;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ConfigDemoServlet extends HttpServlet {
String servletName=null;
ServletConfig config=null;
String email=null;
String telephone=null;
public void init() {
config = getServletConfig();
servletName = config.getServletName();
email = config.getInitParameter("email");
telephone =config.getInitParameter("telephone");
}
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("Servlet名称:"+servletName+"<br>");
out.println("Email地址:"+email+"<br>");
out.println("电话:"+telephone);
out.println("</body></html>");
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>servlet.loginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ConfigDemoServlet</servlet-name>
<servlet-class>servlet.ConfigDemoServlet</servlet-class>
<init-param>
<param-name>email</param-name>
<param-value>hacker@163.com</param-value>
</init-param>
<init-param>
<param-name>telephone</param-name>
<param-value>8899123</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ConfigDemoServlet</servlet-name>
<url-pattern>/bookstore/configDemo</url-pattern>
</servlet-mapping>
</web-app>
结果: