再探servlet
什么是servelt
Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用servlet可以接受表单传来的参数,可以获取数据库中的数据或者其他源的记录。
servlet主要执行以下几个任务:
- 读取客户端发送的显示数据(表单)。
- 读取客户端发送的隐式HTTP请求数据(cookie等)
- 处理数据并生成结果(例如:访问数据库得到数据)
- 发送显式数据到客户端(文档)
- 发送隐式HTTP响应到客户端(比如文档类型,cookie等)
使用servlet示例
1,创建servlet.java文件。
创建一个类,需要继承HttpServlet,根据需要重写doGet和doPost方法。
PrintWriter 可以将数据传递到前端。
pw.flush()和pw.close()将PrintWriter关闭
public class QueryProvinceServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//处理get请求
String proid = req.getParameter("proid");
System.out.println(proid);
String name = "默认是无数据";
//访问dao,查询数据库
if (proid!=null&&!"".equals(proid.trim())){
ProvinceDao dao = new ProvinceDao();
Province province = dao.queryProvinceNameById(Integer.valueOf(proid));
ObjectMapper objectMapper = new ObjectMapper();
name = objectMapper.writeValueAsString(province);
}
// 把获取到的数据,通过网络传给ajax中的异步对象,响应结果数据
// 指定服务器端(servlet)返回给浏览器的是json格式的数据
resp.setContentType("application/json;charset=utf-8");
PrintWriter pw = resp.getWriter();
pw.println(name);
pw.flush();
pw.close();
}
}
2,配置web.xml
每配置一个servlet都要配置一个servlet-mapping
url-pattern是url地址。
<servlet>
<servlet-name>QueryProvinceServlet</servlet-name>
<servlet-class>com.cjh.controller.QueryProvinceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>QueryProvinceServlet</servlet-name>
<url-pattern>/queryProvince</url-pattern>
</servlet-mapping>
3,前端请求在web.xml配置的url路径
这里是get请求方式,执行servlet类时,走doGet方法。
前端请求到该路径的时候,就会执行在web.xml里面配置的对应名称的servlet。可以在该servlet中进行数据库操作,并将得到的数据通过PrintWriter对象响应到前端。
xmlHttp.open("get","queryProvince?proid="+proid,true);