近期任务安排
今天的内容是继续理解昨天的CRUD的写法,然后采用类似的方法重写猜数字的游戏,以巩固认知。今天是最后一次集中练习javaweb的内容了。
上午我讲一下反射的基本内容,在马士兵的视频里有相关章节。
明天我们就按照类似现在的crud的模式,结合反射和xml操作,自己写一个简单的mvc框架。
后天就正式开始学习struts2.
今天主要使用Servlet重新写了猜数字游戏:
自己写的源代码:
List.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>欢迎进入猜数字游戏</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<div align=center><h1>NumberGuess</h1></div>
<p></p>
<p></p>
<hr width=80%>
<div align="center"><a href="<%=request.getContextPath() %>/NumberGuessServlet?act=NewGuess">新游戏</a></div>
<div align=center>
<form name=f action="<%=request.getContextPath() %>/NumberGuessServlet?act=guess" method="post">
<input type="text" size=8 name="number">
<input type="submit" value="guess">
</form>
</div>
</body>
</html>
Result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'result.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<div align=center><P>结果显示</P></div>
<p></p>
<p></p>
<hr width="80%"></hr>
<div align=center>${content }</div>
<div align=center> 你总共猜了${GuessTimes }次</div>
<div align=center>总共有${times}人玩过此游戏</div>
<div align=center><a href='<%=request.getContextPath()%>/NumberGuessServlet?act=new'>返回重新猜</a></div>
</body>
</html>
Servlet文件:
NumberGuessServlet1.java(此servlet写的繁琐了)
package com.yuqiao.qiu;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class NumberGuessServlet1 extends HttpServlet {
public NumberGuessServlet1(){
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
// request.getSession().removeAttribute("randomNo");
String act=request.getParameter("act");
// Integer randomNo1=(Integer)request.getSession().getAttribute("randomNo");
if(null==request.getSession().getAttribute("randomNo")||"NewGuess".equals(act))
{
Random random=new Random();
Integer randomNo=random.nextInt(101);
System.out.print(randomNo);
request.getSession().removeAttribute("GuessTimes");
request.getSession().setAttribute("randomNo", randomNo);
if(null==this.getServletContext().getAttribute("times")){
this.getServletContext().setAttribute("times", 0);
}
else{
Integer times=(Integer)this.getServletContext().getAttribute("times");
++times;
this.getServletContext().setAttribute("times",times);
}
if("NewGuess".equals(act))
{
// this.getServletContext().setAttribute("times",times);
request.getRequestDispatcher("/list.jsp").forward(request, response);
}
}
if("guess".equals(act))
{
Integer number=Integer.parseInt(request.getParameter("number").trim());
request.getSession().setAttribute("number", number);
Integer GuessTimes=(Integer)request.getSession().getAttribute("GuessTimes");
if(GuessTimes == null)GuessTimes = 0;
GuessTimes+=1;
request.getSession().setAttribute("GuessTimes", GuessTimes);
if(number<(Integer)request.getSession().getAttribute("randomNo")){
request.setAttribute("content", "对不起你猜的数字小了");
}
if(number>(Integer)request.getSession().getAttribute("randomNo")){
request.setAttribute("content", "对不起你猜的数字大了");
}
if(number==(Integer)request.getSession().getAttribute("randomNo")){
// request.getSession().setAttribute("number", number);
request.getSession().removeAttribute("randomNo");
request.setAttribute("content", "恭喜你,你猜对了");
}
request.getRequestDispatcher("/result.jsp").forward(request, response);
}
if("new".equals(act))
{
request.getRequestDispatcher("/list.jsp").forward(request, response);
}
}
@Override
// protected void service(HttpServletRequest request, HttpServletResponse response)
// throws ServletException, IOException {
//
// }
//
// public Integer StringToInt(String number)
// {
// return Integer.parseInt(number);
// }
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void init() throws ServletException {
// Put your code here
}
}
Web.xml配置文件
<servlet>
<servlet-name>NumberGuessServlet</servlet-name>
<servlet-class>com.yuqiao.qiu.NumberGuessServlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NumberGuessServlet</servlet-name>
<url-pattern>/NumberGuessServlet</url-pattern>
</servlet-mapping>
其中写的时候遇到的问题挺多:
1. 对于Servlet路径的问题!(超链接如何链接到servlet,还有request.getRequestDispatcher(路径).farward();的路径问题)
2. 其中超链接是使用doGet()方式提交的 所以要重写doGet()方法,不然会报错。
doGet()方法里面直接调用doPost()方法。
3. 出现java.lang.IllegalStateException: Cannot forward after response has been committed 错误。主要原因是进行了两次转向。
4.其他都是小问题(就不写了)
分享到:
相关推荐
Servlet学习笔记(java的Servlet)。 jsp的学习基础。此笔记可让你5天内学会使用Servlet,可快速入门,也可当手册使用。 更多:http://download.csdn.net/user/daillo/all
**林学良Jsp&Servlet学习笔记**: 这份学习资料可能是对JSP和Servlet基础知识的系统性讲解,涵盖了上述概念和原理,适合初学者入门。通过阅读这份笔记,你可以了解JSP和Servlet的基本语法、生命周期、以及如何将它们...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...
Servlet的主要优点包括持久性、平台无关性、可扩展性、安全性以及跨平台的客户机支持。 1. **持久性**:与CGI(Common Gateway Interface)脚本相比,Servlet在Web服务器启动后只需加载一次,后续的多次请求可以...
在本篇学习笔记中,我们将深入探讨与Java Servlet相关的知识点,包括其工作原理、生命周期、配置以及实际应用。 首先,了解Servlet的工作原理至关重要。当一个HTTP请求到达服务器,Web容器(如Tomcat)会识别请求的...
JSP Servlet 学习笔记 第2版 林信良 随书光盘 第3卷
【标题】"J2EE学习,servlet学习" 在IT领域,J2EE(Java 2 Platform, Enterprise Edition)是一个广泛使用的服务器端平台,用于构建和部署企业级应用程序。Servlet是J2EE的重要组成部分,它是一种Java编程接口,...
《JSP & Servlet学习笔记(第2版)》是作者多年来教学实践经验的总结,...《JSP & Servlet学习笔记(第2版)》以“微博”项目贯穿全书,将JSP & Servlet技术应用于实际项目开发之中,并使用重构方式来改进应用程序架构。
本“Servlet学习手册”将深入探讨Servlet的基础概念、工作原理以及实际应用。 首先,我们需要理解Servlet的基本概念。Servlet是在Java平台上运行的小程序,它们在Web服务器中运行,可以扩展服务器的功能,比如处理...
**JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。
在 `web.xml` 文件中,开发者可以配置 JSP 页面、Servlet、过滤器和监听器的行为,以及定义 URL 映射、错误处理等。它是整个 Web 应用的配置中心。 9. **常见错误** 在 JSP 和 Servlet 开发中,常见的错误包括...
Java Servlet 是一种基于Java的服务器端编程技术,用于构建动态Web应用。...Servlet是Java 2平台的重要组成部分,旨在替代CGI...通过学习和掌握Servlet技术,开发者可以构建出复杂的企业级应用系统,满足各种业务需求。
在本篇文章中,我们将深入探讨如何在Java中编写一个Servlet,以及一天之内掌握Servlet的基本知识。 首先,我们需要了解Servlet的生命周期。Servlet的生命周期包括初始化、服务和销毁三个阶段。在初始化阶段,服务器...
在"Servlet学习demo程序"中,我们可能找到了一个名为ServletDemo的示例,这个例子可能是为了演示如何创建和运行一个简单的Servlet。 要入门Servlet,你需要理解以下几个关键概念: 1. **Servlet生命周期**:...
### Servlet学习入门教材知识点概述 本教材旨在帮助初学者理解并掌握Servlet的基础概念与核心技术,以便于更好地在Java Web开发领域进行深入探索。以下将详细阐述该教材中的关键知识点: #### 1. Servlet简介 - **...
吉林大学珠海学院JSP&Servlet学习笔记(第二版)课后答案 本资源为吉林大学珠海学院JSP&Servlet学习笔记(第二版)的课后答案,涵盖了JSP和Servlet相关的知识点。本笔记共分为九章,每章节都包含了相关的问题答案,...
- 学习如何使用Servlet处理不同类型的HTTP请求(GET、POST等),并返回相应的HTTP响应。 - 掌握通过Servlet进行会话跟踪和管理,了解Cookie和Session的使用方法。 - 探索Servlet的过滤器(Filter)和监听器...
**JSP(Java Server Pages...通过系统学习JSP与Servlet,你可以构建出功能丰富的、响应式的Web应用程序,为你的职业生涯开辟新的可能。在实际项目中,理解它们的协同工作原理和最佳实践,将有助于提高开发质量和性能。