首先新建项目(以Idea 2022.2.2为例):
编辑配置,使用Tomcat服务(本地):(工件一定要配置好)
src文件夹下创建Servlet类:
@WebServlet(name = "Servlet", value = "/Servlet")
public class Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.print("hello servlet");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
}
}
效果演示:
创建servlet类接收表单信息,输出对应的参数以及value值,构成表格。
代码示例:
public class ShowParameterServlet extends HttpServlet {
@Serial
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();
// 输出表单
out.println("<html><head><title>Personal Information</title></head>");
out.println("<body><h1>Personal Information</h1>");
out.println("<form method='get'>");
out.println("姓名: <input type='text' name='name'><br>");
out.println("性别: <input type='text' name='gender'><br>");
out.println("爱好: <input type='checkbox' name='hobbies' value='唱歌'> 唱歌" +
" <input type='checkbox' name='hobbies' value='跳舞'> 跳舞" +
" <input type='checkbox' name='hobbies' value='Rap'> Rap" +
" <input type='checkbox' name='hobbies' value='打篮球'> 打篮球<br>");
// 确保在表单提交时,如果没有任何一个复选框被选中,会以空字符串提交该参数
out.println("<input type='hidden' name='hobbies' value=''>");
out.println("年龄: <input type='text' name='age'><br>");
out.println("户籍所在省份: ");
out.println("<select name='province'>");
out.println("<option value=''>--请选择--</option>");
out.println("<option value='广东省'>广东省</option>");
out.println("<option value='福建省'>福建省</option>");
out.println("<option value='湖南省'>湖南省</option>");
out.println("</select><br>");
out.println("<input type='submit' value='Submit'>");
out.println("</form>");
out.println("<hr>");
// 输出参数表格
Enumeration<String> parameterNames = request.getParameterNames();
out.println("<h2>Information table</h2>");
out.println("<table border='1'><tr><th>Name</th><th>Value</th></tr>");
while (parameterNames.hasMoreElements()) {
String paramName = parameterNames.nextElement();
String[] paramValues = request.getParameterValues(paramName);
out.print("<tr><td>" + paramName + "</td><td>");
if (paramValues.length == 1 || paramValues[0].isEmpty()) {
if (!paramValues[0].isEmpty()) {
out.print(paramValues[0]);
} else {
out.print("<i>No Value</i>");
}
} else if (paramValues.length > 1) {
out.print("<ul>");
for (String value : paramValues) {
if (!value.isEmpty()) { // 判断值是否为空字符串
out.print("<li>" + value + "</li>");
}
}
out.print("</ul>");
}
out.println("</td></tr>");
}
out.println("</table>");
out.println("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
需要在web.xml配置相关映射关系
<web-app >
<servlet>
<servlet-name>ShowParameterServlet</servlet-name>
<servlet-class>ShowParameterServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShowParameterServlet</servlet-name>
<url-pattern>/showParams</url-pattern>
</servlet-mapping>
</web-app>
实验内容:编写JSP程序,实现用户提交登录表单给Servlet,由Servlet 查询数据库(模拟查询,不用真的连接数据库查询),对用户是否存在进行验证。
实验步骤:
(1)编写一个验证用户的Servlet(LoginServlet. java),再编写登录页面程序login.html、登录成功页面welcome.jsp和登录失败页面loginfail.jsp。
(2)运行程序查看效果。
LoginServlet.java:
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 模拟查询数据库
if ("admin".equals(username) && "123456".equals(password)) {
HttpSession session = request.getSession();
session.setAttribute("loginStatus", "success");
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);
} else {
HttpSession session = request.getSession();
session.setAttribute("loginStatus", "fail");
RequestDispatcher rd = request.getRequestDispatcher("loginfail.jsp");
rd.forward(request, response);
}
}
}
Login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="http://localhost:8080/jspDemo__war_exploded/LoginServlet" method="Get">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required><br>
<input type="submit" value="Login">
</form>
</body>
</html>
welcome.jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="http://localhost:8080/jspDemo__war_exploded/LoginServlet" method="Get">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required><br>
<input type="submit" value="Login">
</form>
</body>
</html>
loginfail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<h1>用户名或密码错误,请重新登录!</h1>
</body>
</html>