javaweb实验:Servlet应用开发
本实验的目的是掌握Servlet的基本概念和编程技巧,了解Servlet的生命周期和工作原理,学习如何使用Servlet处理客户端的请求和响应,以及如何在Servlet中使用JavaBean、Session、Cookie等技术实现数据的存取和传递。本实验分为四个部分:第一部分:创建一个简单的Servlet程序,了解Servlet的配置和运行方式,以及如何在Servlet中获取请求参数和输出响应内容
目录
前言
本实验的目的是掌握Servlet的基本概念和编程技巧,了解Servlet的生命周期和工作原理,学习如何使用Servlet处理客户端的请求和响应,以及如何在Servlet中使用JavaBean、Session、Cookie等技术实现数据的存取和传递。
本实验分为四个部分:
第一部分:创建一个简单的Servlet程序,了解Servlet的配置和运行方式,以及如何在Servlet中获取请求参数和输出响应内容。
第二部分:使用Servlet处理表单请求
第三部分:在Servlet中获取应用程序配置参数,并在页面上显示结果。
第四部分:使用Servlet处理用户登录请求,根据登录验证结果,分别跳转至登录成功页面和登录失败页面。
实验目的
- 学会 Servlet的创建、配置及运行方法;
- 学会使用Servlet获取表单数据;
- 学会配置和获取应用初始化参数的方法;
- 学会使用Servlet的跳转方法实现客户端跳转和服务器端跳转。
实验内容
(一)编写和运行一个简单的Servlet,向浏览器窗口(页面)输出如下内容:“Welcome to China!”、“热情好客的中国欢迎您!”和系统当前时间。输出效果如图所示
(二)使用Servlet处理表单请求
(三)在Servlet中获取应用程序配置参数。
(四)使用Servlet处理用户登录请求,根据登录验证结果,分别跳转至登录成功页面和登录失败页面。
实验原理或流程图
Servlet是运行在服务器端的Java程序,它主要是为了扩展服务器的功能。编写和运行Servlet一般要经过4个步骤:(1)编辑源文件,它是继承HttpServlet的Java类;(2)编译源文件;(3)在服务器中部署该Servlet,即将类文件存放到服务器的适当目录中,并修改web.xml部署描述文件;(4)使用浏览器访问该Servlet程序。
Servlet程序的生命周期包括:加载程序、初始化、服务、销毁、卸载五个阶段。Servlet程序的生命周期中最为重要的就是service()方法,doGet()和doPost()是专门负责处理Http请求的。
Servlet与JSP的联系与区别:JSP是一种服务器端的动态页面技术,它的实质也是Servlet。它的编写较Servlet容易。二者的主要区别是:Servlet通常是实现业务逻辑,而JSP通常实现表示逻辑。
Servlet本身存在HttpServletRequest和HttpServletResponse对象的声明,可以使用Servlet接收用户提交的内容。
可以通过表单或超链接从一个JSP或者是一个HTML页面跳转进Servlet,也可以从Servlet跳转到其他的Servlet、JSP或其他页面,采用跳转形式有两种:(1)使用HttpServletResponse接口的sendRedirect()方法实现的客户端跳转;(2)使用RequestDispatcher接口的forward()方法实现的服务器端跳转。
实验过程
一个简单的servlet
Servlet
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.write("Welcome to China!<br>热情好客的中国欢迎您!<br><br>当前时间:" + new Date());
}
}
表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index</title>
</head>
<body>
<a href="HelloServlet">xianshj</a>
</body>
</html>
结果展示
使用servlet处理表单请求
servlet
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/input")
public class InputServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.write("<h1>用户名:" + request.getParameter("name") + "<br>密 码:" + request.getParameter("password") + "<h1>");
}
}
结果展示
在Servlet中获取应用程序配置参数
servlet
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class InitParamServlet extends HttpServlet {
String nuc_url = "";
@Override
public void init(ServletConfig config) throws ServletException {
nuc_url = config.getInitParameter("nuc_url");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.write(nuc_url);
}
}
使用Servlet处理用户登录请求
Servlet
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String myName = "luyunchi";
String myPassword = "123123";
String name = request.getParameter("name");
String password = request.getParameter("password");
if (name.equals(myName) && password.equals(myPassword)) {
request.setAttribute("name", name);
request.getRequestDispatcher("/login_success.jsp").forward(request,response);
} else {
request.getRequestDispatcher("/login_failure.jsp").forward(request,response);
}
}
}
登录表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<center>
<h1>用户登录</h1>
</center>
<hr><br>
<form action="${pageContext.request.contextPath}/login" method="get">
<table align="center" border="0">
<tr>
<td align="right">用户名:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td align="right">密 码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="提交">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
</body>
</html>
登陆成功页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功页面</title>
</head>
<body>
<center>
<h1>恭喜,您登录成功!</h1>
<br><br>
<h1>欢迎<%=request.getAttribute("name")%>光临!</h1>
</center>
</body>
</html>
登录失败页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录失败页面</title>
</head>
<body>
<center>
<h1>用户ID或密码错误!请重新<a href="${pageContext.request.contextPath}/login_6_4.jsp">登录</a> </h1>
</center>
</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">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>ServletDemo</servlet-name>
<servlet-class>demoSeverlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>demoSeverlet.InputServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>/InputServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ServletDemo2</servlet-name>
<servlet-class>demoSeverlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo2</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ServletDemo3</servlet-name>
<servlet-class>demoSeverlet.InitParamServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo3</servlet-name>
<url-pattern>/InitParamServlet</url-pattern>
</servlet-mapping>
</web-app>
总结
本文是对javaweb实验中Servlet应用开发的总结,主要介绍了Servlet的概念、功能、生命周期和编程步骤。Servlet是一种运行在服务器端的Java程序,它可以接收和响应客户端的请求,实现动态的Web内容生成。Servlet的功能包括:处理表单数据、管理会话状态、与数据库交互、实现过滤器和监听器等。Servlet的生命周期由容器管理,一般分为三个阶段:初始化、服务和销毁。Servlet的编程步骤主要有:创建Servlet类,实现init、service和destroy方法;配置web.xml文件,注册Servlet和映射URL;部署和运行Servlet应用,测试其功能。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)