1、创建工程file → new → Web Project :ch2webprj1
2、file → new → HTML:search.html (编写search.html)
①编写form表单
<body>
<form name="form1" method="post" action="goods.do">
<input type="text" size="40" name="goods"/>
<input type="submit" value="提交"/>
</form>
</body>
② 指定action="goods.do"
3、编写与goods.do对应的服务器端程序
①src 下新建servlet :GetGoodsServlet
只留下doGet和doPost
★ Servlet/JSP Mapping URL和action对应(如下图)
②在doGet方法里调用doPost
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
③在doPost方法中设置编码格式、获取请求参数并输出(★请求参数需要和表单元素name值相同)
//设置编码格式
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
//获取请求参数
String goods= request.getParameter("goods");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
//输出商品
out.println("您搜索的商品是:<br> ");
out.println(goods);
4、发布项目,将项目发布到tomcat
5、启动服务
6、测试
★备注:运行流程
Search.html → submit() → action=”good.do” → <url-pattern>★/goods.do</url-pattern> → <servlet-name> → <servlet-class> →设置编码格式UTF-8 →获取请求参数→输出网页信息
在前面的基础上输出商品
1、src下创建包:com.ch2.data
2、在com.ch2.data包下创建Goods类;(代码见附录三)
3、在com.ch2.data包下创建GoodsData类,模拟数据库(代码见附录四)
4、在GetGoodsServlet下编写运行程序(代码见附录五)
代码:
附录一:Search.html部分
<!DOCTYPE html>
<html>
<head>
<title>search.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<form name="form1" method="post" action="goods.do">
<input type="text" size="40" name="goods"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
附录二:Web.xml部分
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<servlet>
<servlet-name>GetGoodsServlet</servlet-name>
<servlet-class>com.ch2.servlet.GetGoodsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GetGoodsServlet</servlet-name>
<url-pattern>/goods.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
附录三:Goods.java部分
package com.ch2.data;
public class Goods {
private int id;
private String name;
private String brand;
private double price;
private String color;
//无参
public Goods() {
super();
}
//有参
public Goods(int id, String name, String brand, int price, String color) {
super();
this.id = id;
this.name = name;
this.brand = brand;
this.price = price;
this.color = color;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
附录四:GoodsData.java部分
package com.ch2.data;
import java.util.*;
public class GoodsData {
//创建Goods集合
public static ArrayList<Goods> goodslist=new ArrayList<Goods>();
static{
//创建对象
Goods goods1=new Goods(1,"6p","苹果",5000,"黑色");
Goods goods2=new Goods(2,"P720","联想",1100,"红色");
Goods goods3=new Goods(3,"小米2","小米",500,"白色");
Goods goods4=new Goods(4,"华为","小米",500,"白色");
Goods goods5=new Goods(5,"荣耀","小米",500,"白色");
//添加到集合
goodslist.add(goods1);
goodslist.add(goods2);
goodslist.add(goods3);
goodslist.add(goods4);
goodslist.add(goods5);
}
}
附录五:GetGoodsServlet.java部分
package com.ch2.servlet;
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;
import com.ch2.data.Goods;
import com.ch2.data.GoodsData;
import java.util.*;
public class GetGoodsServlet extends HttpServlet {
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
/*response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();*/
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
//获取请求参数
String goods= request.getParameter("goods");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
//输出商品
out.println("您搜索的商品是:<br> ");
out.println(goods);
//根据Goods的值查询数据,将数据库GoodsData与Goods相关的产品查询出来
//创建临时数据集合,存放查到的商品
ArrayList<Goods> templist=new ArrayList<Goods>();
//遍历GoodsData.goodslist
for(int i=0;i< GoodsData.goodslist.size();i++){
//从集合中逐个取出对象
Goods tempgoods=GoodsData.goodslist.get(i);
String name = tempgoods.getName();
if(name.indexOf(goods)!=-1){
templist.add(tempgoods);//将符合条件的对象添加到集合
}
}
//显示templist中的数据
if(templist.size()==0){
out.println("没有符合条件的商品<br>");
}else{
out.print("<table border=1 width='500' >");//以表格的形式输出
out.print("<tr>");
out.print("<td>编号</td>"); //表头固定元素
out.print("<td>名称</td>");
out.print("<td>品牌</td>");
out.print("<td>价格</td>");
out.print("<td>颜色</td>");
out.print("</tr>");
for(int i=0;i<templist.size();i++){
//取出对象
Goods findgoods = templist.get(i);
//out.println("编号"+findgoods.getId()+"名称:"+findgoods.getName()+"品牌:"+findgoods.getBrand()+"价格:"+findgoods.getPrice()+"颜色"+findgoods.getColor()+"<br>");
out.print("<tr>");
out.print("<td>"+findgoods.getId()+"</td>"); //变量
out.print("<td>"+findgoods.getName()+"</td>");
out.print("<td>"+findgoods.getBrand()+"</td>");
out.print("<td>"+findgoods.getPrice()+"</td>");
out.print("<td>"+findgoods.getColor()+"</td>");
out.print("</tr>");
}
out.print("<table>");
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}