实验八 Servlet的使用含答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八Servlet的使用
实验性质:设计性实验学时:2学时实验地点:
一、实验目的与要求
1、理解Servlet的功能。
2、掌握Servlet的编写方法和部署方法。
3、掌握配置文件web.xml的编写方法。
二、实验内容
1、Servlet的相关基本概念
(1)什么是servlet?
2、简单的Servlet应用
(1)编写一个Servlet,实现向页面输出“Hello World”的功能。
请写出相应Servlet 类的代码(Servlet的包名自定):
ShiYan8_1.java
package myservlet.control;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.*;
public class ShiYan8_1 extends HttpServlet{
public void service(HttpServletRequest reqest,HttpServletResponse response)
throws IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter();
out.println("<html><body bgcolor = #EEDDFF>");
out.println("Hello World!");
out.println("</body></html>");
}
}
(2)请问编写好的Servlet的字节码文件应部署在Web服务目录中的什么位置?请写出具体的路径:
F:\apache-tomcat-7.0.77\webapps\15jsp\WEB-INF\classes\myservlet\control
(这个答案不是标准答案,每个人可以不同)
(3)若要实现本例的效果,必须配置web.xml文件,请问web.xml文件在哪里?如何配置web.xml文件?请写出相应的代码:
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>myservlet.control.ShiYan8_1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping> (此答案不唯一,每个人可能不同)
(4)若要在浏览器中请求该Servlet,地址栏中应如何输入,请写出来:
http://127.0.0.1:8080/15jsp/helloworld(此答案不唯一,每个人可能不同)
3、通过JSP页面请求servlet
(1)通过表单请求servlet
编写一个计算矩形面积的Servlet,完成在web.xml文件中的相应配置。
再编写一个包含有表单的JSP页面,表单中输入矩形的长和宽,提交表单后请求servlet,计算出矩形面积并输出。
请写出相应代码以及web.xml配置文件:
Rectangle.java
package myservlet.control;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Rectangle extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String chang=request.getParameter("chang");
String kuan=request.getParameter("kuan");
if(chang==null||kuan==null||chang.length()==0||kuan.length()==0){
response.sendRedirect("shiyan8_3form.jsp");
}
else{
double ch=Double.parseDouble(chang);
double ku=Double.parseDouble(kuan);
double area=ch*ku;
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter();
out.println("<html><body bgcolor = #EEDDFF>");
out.print("长为"+ch+",宽为"+ku+"的矩形面积是:");
out.println(area);
out.println("</body></html>");
}
}
}
shiyan8_3form.jsp
<%@ page contentType="text/html;charset=gb2312" %>
<html>
<body>
<form action="rectangle" method="post">
<p>请输入:</p>
矩形的长: <input type="text" name="chang">
矩形的宽: <input type="text" name="kuan">
<input type="submit" value="提交">
</form>
</body>
</html>
web.xml
<servlet>
<servlet-name>rectangle</servlet-name>
<servlet-class>myservlet.control.Rectangle</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>rectangle</servlet-name>
<url-pattern>/ch5/rectangle</url-pattern>
</servlet-mapping>
(2)通过超链接访问Servlet
编写如下图所示的JSP页面,单击超链接后可请求上题中的servlet,计算出边长为4、宽为5的矩形面积。
请写出JSP页面的代码:
shiyan8_3.jsp
<%@ page contentType="text/html;charset=gb2312" %>
<html>
<body>
<a href="rectangle?chang=4&kuan=5">矩形(长为4,宽为5)的面积</a>
</form>
</body>
</html>
补充servlet应用实例:用户登录
login.jsp(该文件位于项目文件夹15jsp中的ch5子文件夹中)
<%@ page contentType="text/html;charset=gb2312" %>
<html><body style="font-size:24px;">
<h3>用户登录</h3>
<%
String msg=(String)session.getAttribute("msg");
if(msg!=null){
%>
<span style="color:red"><%=msg %></span>
<%
session.setAttribute("msg", null);
作用等同于../LoginServlet
}
%>
<form action="${pageContext.request.contextPath}/LoginServlet" method="post">
用户名:<input type="text" name="userName">
<br/><br/>
密 码:<input type="password" name="password">
<br/><br/>
<input type="submit" value="确定">
<input type="reset" value="取消">
</form>
</body></html>
LoginServlet.java
package myservlet.control;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName=request.getParameter("userName");
byte b[]=userName.getBytes("iso-8859-1");
userName=new String(b);
String password=request.getParameter("password");
if(userName.equals("张三")&&password.equals("123456")){
RequestDispatcher dispatcher=request.getRequestDispatcher("success.jsp");
dispatcher.forward(request, response);
}
else{
HttpSession session=request.getSession(true);
session.setAttribute("msg", "用户名或密码错误,请重新输入!");
response.sendRedirect("login.jsp");
}
}
}
success.jsp
<%@ page contentType="text/html;charset=gb2312" %>
<html><body style="font-size:24px;">
<%
//request.setCharacterEncoding("gb2312");
String userName=request.getParameter("userName");
byte b[]=userName.getBytes("iso-8859-1");
userName=new String(b);
%>
<p>你好<em><%=userName %>
</em>,欢迎你。
</p>
</body></html>
web.xml
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>myservlet.control.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/ch5/LoginServlet</url-pattern> </servlet-mapping>
三、实验内容中遇到的问题、解决方法和体会。