成语接龙———JSP+ Servlet技术实现

互联网软件开发期中测验

本程序需在Tomcat 8上运行,Tomcat7会导致判断汉字函数出错,可自行修改将该函数删去,不进行判断

注意事项

按班级序号就座,考试结束后不要关闭MyEclipse(Tomcat为运行状态)及浏览器。

一、创建项目:启动MyEclipse 2014,新建名为【你的学号】的【Web Project】。(20分)

二、使用JSP+ Servlet技术,实现如下功能,具体要求如下:

1、创建add.jsp:如图1所示,点击【接龙】后提交到LinkServlet。(20分)
2、LinkServlet:作为Servlet接收来自add.jsp的表单数据,将成语接龙到上一成语之后保存到session中,并重定向到show.jsp。(20分)
3、show.jsp:以表格的形式列出session内置对象中的全部成绩(如图2所示)。 (20分)
4、在web.xml中配置LinkServlet(或者采用注解的方式)。(20分)
5、部署工程并启动Tomcat,打开浏览器访问:http://localhost:8080/你的学号/add.jsp,并测试相关功能。(20分)
在这里插入图片描述

add.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="lumen.Word"%>
<html>
  <head>
  	<style> 
	input[type=submit]{
	  background-color: green;
	  color:white;
	  height: 30px;
	}
	</style>
  </head>
  
  <body>
  <%
 	List<Word> list=(List<Word>)session.getAttribute("wordlist");
	if(list==null) //说明还没有成语
	{
	 out.println("暂时没有成语,请进行输入四字成语:");
	}else{
	   Word word=list.get(list.size()-1);
    %> 
	上一个成语:<%=word.getStr()%><br>
	最后一个字:<%= word.getLast()%>
	<%
	}
	%>
   <form action="LinkServlet" method="get">
   <input type="text" name=str style="height: 30px; ">
   <input type="submit" value="接龙">
   </form>
  </body>
</html>

show.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="lumen.Word"%>
<html>
  <head>
	<style >
	table
	{
    	border-collapse:collapse;
	}
	th
	{
		background-color:green;
		color:white;	
	}
	td
	{
		text-align:center;
	}
	</style>
  </head>
  
  <body>
    <%
    	List<Word> list=(List<Word>)session.getAttribute("wordlist"); //取出list
    	if(list==null) //说明还没有成语
	 	{
	 		response.sendRedirect("add.jsp");
	 	}else{
    %>

<table border="2">
	<tr>
		<th>序号</th>
		<th>内容</th>
	</tr>
	
	<%
		for(int i=0;i<list.size();i++){
			Word word=list.get(i);
	%>
	 
	 <tr>
		<td><%=i+1 %></td>
		<td><%=word.getStr()%></td>
	</tr>
	
	<%}}%>
	
	</table>
	<a href="add.jsp"> 继续成语接龙</a> <br>
  </body>
</html>

error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <body>
 <%  String a=request.getParameter("action");
  	 if(a.equals("1")){
  	   out.println("含有非汉字!");
  	 }else if(a.equals("2"))
  	 { 
  	  	out.println("非四字成语!");
  	 }else if(a.equals("3"))
  	 {
  	 	out.println("接龙失败,换个词吧!");
     } 
 %>
  	 <br>
   <a href="show.jsp"> 查看成语接龙</a> <br>
   <a href="add.jsp"> 继续成语接龙</a> <br>
  </body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>44181</display-name>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>LinkServlet</servlet-name>
    <servlet-class>lumen.LinkServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>LinkServlet</servlet-name>
    <url-pattern>/LinkServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

LinkServlet

package lumen;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LinkServlet extends HttpServlet {
	public boolean check(String str)//判断str是否都为汉字,tomcat 7识别不了
	{
	int n = 0;
	for(int i = 0; i < str.length(); i++) {
		n = (int)str.charAt(i);
		if(!(19968 <= n && n <40869)) 
		{
			return false;
		}
		
		}
		return true;
	}	
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
				HttpSession session=request.getSession();
				
				//获取表单提交的成语str
				String str=request.getParameter("str");
				
				
				//排除不为4位汉字的情况:不为汉字或不为4位都将重定向到error界面
				if(!check(str)){
					response.sendRedirect("error.jsp?action=1");
				}else if((str.length()!=4)){
					response.sendRedirect("error.jsp?action=2");
				}else
				{
					//截取第一个字符,最后一个字符
					String first = str.substring(0,1);
					String last = str.substring(3,4);
					
					Word word=new Word();
					word.setStr(str);
					word.setLast(last);
					List<Word> list=(List<Word>)session.getAttribute("wordlist");//创建Word类型的集合,从session中获取
					if(list==null) //说明还没有成语
					{
						list=new ArrayList<Word>();
						list.add(word);
						session.setAttribute("wordlist", list); //将list存入session	
				        response.sendRedirect("show.jsp");
					}else{
						Word lastword=list.get(list.size()-1);//取出list中最后一位的Word对象
						if(lastword.getLast().equals(first))//判断尾首是否相等,只能用equals()
						{                                   //==判断地址;equals判断内容
							list.add(word);
							session.setAttribute("wordlist", list);
					        response.sendRedirect("show.jsp");
						}else
						{
							response.sendRedirect("error.jsp?action=3");
						}
							
					}
				}			
	}
}

Word.java

package lumen;

public class Word {
	private String  str;
	private String  last;
	public String getStr() {
		return str;
	}
	public void setStr(String str) {
		this.str = str;
	}
	public String getLast() {
		return last;
	}
	public void setLast(String last) {
		this.last = last;
	}
}

运行结果

Case1:非汉字情况
在这里插入图片描述
在这里插入图片描述

Case2:汉字不为4个字
在这里插入图片描述
在这里插入图片描述

Case3:输入正确
在这里插入图片描述
在这里插入图片描述
Case4:接龙失败

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先在JSP页面中,需要设置输入框和提交按钮,用于用户输入成语。代码如下: ``` <form method="post" action="idiom.jsp"> <label>请输入成语:</label> <input type="text" name="idiom" /> <input type="submit" value="提交" /> </form> ``` 然后在JSP页面中,需要编写JavaBean类来实现成语接龙的逻辑。JavaBean类的代码如下: ``` public class IdiomGame { private String lastIdiom = ""; // 上一个成语 private String currentIdiom = ""; // 当前成语 // 判断输入的成语是否符合规则 public boolean isValidIdiom(String idiom) { if (idiom == null || idiom.length() == 0) { return false; } if (lastIdiom.length() == 0) { // 第一个成语,不需要判断 return true; } if (idiom.charAt(0) != lastIdiom.charAt(lastIdiom.length() - 1)) { // 不符合接龙规则 return false; } return true; } // 生成一个新的成语 public String generateIdiom() { // TODO: 实现生成成语的逻辑 return ""; } // 处理用户输入的成语 public String handleInput(String inputIdiom) { if (!isValidIdiom(inputIdiom)) { // 不符合规则 return "输入的成语不符合规则,请重新输入!"; } currentIdiom = inputIdiom; String newIdiom = generateIdiom(); if (newIdiom.length() == 0) { // 无法生成新的成语游戏结束 return "恭喜您,游戏结束!"; } lastIdiom = currentIdiom; currentIdiom = newIdiom; return "接龙成功,您的成语为:" + currentIdiom; } } ``` 在JSP页面中,需要将JavaBean实例化,并调用它的方法来处理用户输入的成语,输出游戏结果。代码如下: ``` <% // 实例化JavaBean IdiomGame game = new IdiomGame(); // 处理用户输入的成语 String result = game.handleInput(request.getParameter("idiom")); // 输出游戏结果 out.println(result); %> ``` 完整的JSP页面代码如下: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.example.IdiomGame" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>成语接龙</title> </head> <body> <h1>成语接龙</h1> <form method="post" action="idiom.jsp"> <label>请输入成语:</label> <input type="text" name="idiom" /> <input type="submit" value="提交" /> </form> <% // 实例化JavaBean IdiomGame game = new IdiomGame(); // 处理用户输入的成语 String result = game.handleInput(request.getParameter("idiom")); // 输出游戏结果 out.println(result); %> </body> </html> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值