利用servlet轉發技術實現統計form表單中字母次數
來源:程序員人生 發布時間:2014-10-08 08:00:00 閱讀次數:1829次
需求是利用servlet轉發技術,實現對html網頁中用戶輸入的內容進行統計,統計每個字母出現的次數,忽略大小寫。其中統計功能在一個servlet中,轉發功能在另一個servlet中。
1.新建dynamic web project,命名為CounterCharacter
2.在webContent目錄中新建index.html文件,設置form表單
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/CountCharacter/LetterCountServlet" method="post">
請輸入文章<textarea rows="5" cols="50" name="content"></textarea>
<input type="submit" value="提交"/>
</form>
</body>
</html>
3.在JavaResource/src目錄下新建一個包,命名為servletDemo,在該包中新建一個servlet,命名為LetterCountServlet,主要負責統計用戶輸入的內容中每個字母出現的次數
package servletDemo;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class LetterCountServlet
* 統計用戶輸入內容中每個字母出現次數
*/
@WebServlet(asyncSupported = true, urlPatterns = { "/LetterCountServlet" })
public class LetterCountServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LetterCountServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("Servlet works");
//獲得form表單提交的內容
String content = request.getParameter("content");
//忽略大小寫,把用戶輸入全部轉換成大寫
content = content.toUpperCase();
int[] times = new int[26];
for(int i = 0; i < content.length();i++)
{
char c = content.charAt(i);
//判斷C是不是字母
if(Character.isLetter(c))
times[c-'A']++;
}
//交給下一個servlet顯示結果
ServletContext context = getServletContext();
//添加count屬性
context.setAttribute("count", times);
//跳轉至下一個servlet
RequestDispatcher dispatcher = context.getRequestDispatcher("/ResulstServlet");
dispatcher.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
}
4.在
servletDemo包中新建一個servlet,命名為ResultServlet,主要負責統計結果的輸出
package servletDemo;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ResulstServlet
* 顯示統計結果
*/
@WebServlet(asyncSupported = true, urlPatterns = { "/ResulstServlet" })
public class ResulstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ResulstServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
ServletContext context = getServletContext();
int[] times = (int[]) context.getAttribute("count");
//輸出結果
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
for(int i = 0; i < times.length;i++)
{
char c = (char) ('A'+ i);
int frequency = times[i];
out.println("字母:"+c+",出現次數"+frequency+"次!<br/>");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
}
5.OK,功能實現
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈