`
xiaoqzai414
  • 浏览: 15863 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Servlet学习以及使用

阅读更多
近期任务安排

今天的内容是继续理解昨天的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)

    Servlet学习笔记(java的Servlet)。 jsp的学习基础。此笔记可让你5天内学会使用Servlet,可快速入门,也可当手册使用。 更多:http://download.csdn.net/user/daillo/all

    林学良Jsp&Servlet学习笔记

    **林学良Jsp&Servlet学习笔记**: 这份学习资料可能是对JSP和Servlet基础知识的系统性讲解,涵盖了上述概念和原理,适合初学者入门。通过阅读这份笔记,你可以了解JSP和Servlet的基本语法、生命周期、以及如何将它们...

    JSP&Servlet学习笔记.pdf

    本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。  本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...

    servlet学习笔记.doc

    Servlet的主要优点包括持久性、平台无关性、可扩展性、安全性以及跨平台的客户机支持。 1. **持久性**:与CGI(Common Gateway Interface)脚本相比,Servlet在Web服务器启动后只需加载一次,后续的多次请求可以...

    java-servlet学习笔记

    在本篇学习笔记中,我们将深入探讨与Java Servlet相关的知识点,包括其工作原理、生命周期、配置以及实际应用。 首先,了解Servlet的工作原理至关重要。当一个HTTP请求到达服务器,Web容器(如Tomcat)会识别请求的...

    JSP Servlet 学习笔记 第2版 林信良 随书光盘 共三卷

    JSP Servlet 学习笔记 第2版 林信良 随书光盘 第3卷

    J2EE学习,servlet学习

    【标题】"J2EE学习,servlet学习" 在IT领域,J2EE(Java 2 Platform, Enterprise Edition)是一个广泛使用的服务器端平台,用于构建和部署企业级应用程序。Servlet是J2EE的重要组成部分,它是一种Java编程接口,...

    JSP_Servlet学习笔记(第2版).pdf

    《JSP & Servlet学习笔记(第2版)》是作者多年来教学实践经验的总结,...《JSP & Servlet学习笔记(第2版)》以“微博”项目贯穿全书,将JSP & Servlet技术应用于实际项目开发之中,并使用重构方式来改进应用程序架构。

    servlet学习手册

    本“Servlet学习手册”将深入探讨Servlet的基础概念、工作原理以及实际应用。 首先,我们需要理解Servlet的基本概念。Servlet是在Java平台上运行的小程序,它们在Web服务器中运行,可以扩展服务器的功能,比如处理...

    [JSP&Servlet;学习笔记(第2版)]

    **JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。

    jsp/servlet个人学习笔记

    在 `web.xml` 文件中,开发者可以配置 JSP 页面、Servlet、过滤器和监听器的行为,以及定义 URL 映射、错误处理等。它是整个 Web 应用的配置中心。 9. **常见错误** 在 JSP 和 Servlet 开发中,常见的错误包括...

    Java Servlet 学习课件

    Java Servlet 是一种基于Java的服务器端编程技术,用于构建动态Web应用。...Servlet是Java 2平台的重要组成部分,旨在替代CGI...通过学习和掌握Servlet技术,开发者可以构建出复杂的企业级应用系统,满足各种业务需求。

    servlet学习

    在本篇文章中,我们将深入探讨如何在Java中编写一个Servlet,以及一天之内掌握Servlet的基本知识。 首先,我们需要了解Servlet的生命周期。Servlet的生命周期包括初始化、服务和销毁三个阶段。在初始化阶段,服务器...

    servlet学习demo程序

    在"Servlet学习demo程序"中,我们可能找到了一个名为ServletDemo的示例,这个例子可能是为了演示如何创建和运行一个简单的Servlet。 要入门Servlet,你需要理解以下几个关键概念: 1. **Servlet生命周期**:...

    servlet学习入门教材

    ### Servlet学习入门教材知识点概述 本教材旨在帮助初学者理解并掌握Servlet的基础概念与核心技术,以便于更好地在Java Web开发领域进行深入探索。以下将详细阐述该教材中的关键知识点: #### 1. Servlet简介 - **...

    吉林大学珠海学院JSP&Servlet学习笔记(第二版)课后答案

    吉林大学珠海学院JSP&Servlet学习笔记(第二版)课后答案 本资源为吉林大学珠海学院JSP&Servlet学习笔记(第二版)的课后答案,涵盖了JSP和Servlet相关的知识点。本笔记共分为九章,每章节都包含了相关的问题答案,...

    servlet和jsp学习指南

    - 学习如何使用Servlet处理不同类型的HTTP请求(GET、POST等),并返回相应的HTTP响应。 - 掌握通过Servlet进行会话跟踪和管理,了解Cookie和Session的使用方法。 - 探索Servlet的过滤器(Filter)和监听器...

    JSP与Servlet学习课件

    **JSP(Java Server Pages...通过系统学习JSP与Servlet,你可以构建出功能丰富的、响应式的Web应用程序,为你的职业生涯开辟新的可能。在实际项目中,理解它们的协同工作原理和最佳实践,将有助于提高开发质量和性能。

Global site tag (gtag.js) - Google Analytics