1.servlet工作模式:
- 客户端发送请求至服务器
- 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
- 服务器将响应返回客户端
2. 在html 界面中,要是没有设定提交的方法,默认以doGet的方法进行处理。servlet有两种处理客户请求的方法,分别是doGet和doPost:
(1). 如果客户以get方法请求,请求的参数会以名值对的形式显示在浏览器的地址栏,请求发送的数据,不能大于1024K,在服务器端的servlet中,必须以doGet方法接收
(2).如果是客户以post方法请求,请求的参数不会显示在地址栏,请求的发送的数据可以是无限大,例如上传文件时,肯定是post方法,在服务器端的servlet中,就必须以doPost方法接收。
3.init()方法可用于初始化加载service服务。
servlet里的init代码:
/**
* 初始化servlet注入service
*/
public void init(ServletConfig servletConfig) throws ServletException {
//把webApplicationContext的service服务向servlet传递
ServletContext servletContext = servletConfig.getServletContext(); //ServletContext为servlet-api.jar包
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);//WebApplicationContext为spring组件
providerFacade = (ProviderFacade)ctx.getBean("providerFacade");//根据id加载providerFacade服务
packageProductLineFacade = (PackageProductLineFacade)ctx.getBean("packageProductLineFacade");
}
spring配置文件:
<bean id="providerFacade" parent="baseTransactionProxy" abstract="false" lazy-init="default" autowire="default" dependency-check="default">
<property name="target">
<bean class="com.mangocity.api.facade.impl.ProviderFacadeImpl" parent="facade" abstract="false" lazy-init="default" autowire="default" dependency-check="default">
<property name="providerDAO">
<ref bean="providerDAO"/>
</property>
</bean>
</property>
</bean>
4.servlet根据参数分派给不同的方法处理--相当于struts分派不同的action
例如两请求如下:1. var QUERYURL="providerProductServlet?method=query&providerCD="+providerCD+"&data="+data;
2.var QUERYURL="providerProductServlet?method=delete&providerCD="+providerCD+"&data="+data;
则在servlet中处理可如下:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
request.getParameter("name");
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
if(request.getParameter("method").equals("query"))//再分别编写pagingQueryProduct以及deleteProduct方法
{
pagingQueryProduct(request, response);
}
if(request.getParameter("method").equals("delete"))
{
deleteProduct(request, response);
}
}
/**
* 删除单个产品
* @param request
* @param response
*/
private void deleteProduct(HttpServletRequest request, HttpServletResponse response) {
long lineId = Long.valueOf(request.getParameter("lineId"));
PackageProductLine productLine = (PackageProductLine) packageProductLineFacade.find(lineId);
productLine.setStatus("N");
packageProductLineFacade.saveProductlineInfo(productLine);
try {
pagingQueryProduct(request, response);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("删除id为:" + productLine.getId());
}
/**
* 分页查询产品
* @param request
* @param response
*/
private void pagingQueryProduct(HttpServletRequest request,
HttpServletResponse response) throws IOException {
PrintWriter out = response.getWriter();
int pageNum = 1;
int pageSize = 10;
String data = request.getParameter("data");
String providercd = (String) request.getSession().getAttribute("providerCD");
if(providercd == null || "".equals(providercd))
{
providercd = request.getParameter("providerCD");
request.getSession().setAttribute("providerCD", providercd);
}
Map map = (HashMap) JSONObject.toBean(JSONObject.fromObject(data),HashMap.class);
if(providercd != null && !"".equals(providercd))
{
if(map != null && !"".equals(map))
{
pageNum = Integer.valueOf(map.get("pageNum").toString());
pageSize = Integer.valueOf(map.get("pageSize").toString());
}
}
if (map != null && map.size() > 0)
{
if (map.containsKey("id"))
{
String id = (String)map.get("id");
if (null != id && !id.equals("")) {
if(!isNumeric(id)) {
map.put("id", "0");
}
}
}
if (map.containsKey("name"))
{
String name = (String)map.get("name");
if (name != null && "产品名称".equals(name.trim()))
//if (name != null && "产品名称".equals(new String(name.trim().getBytes("ISO8859-1"), "GBK")))
{
map.put("name", null);
}
}
}
PageModel model = packageProductLineFacade.pagingQueryProduct(providercd, map, pageNum, pageSize);
JsonConfig config = new JsonConfig();
config.setExcludes(new String[]{"pageModel", "hibernateLazyInitializer","handler","tProvince"});
String page = JSONObject.fromObject(model,config).toString();
String jsonpCallback = request.getParameter("jsonpCallback");
out.println(jsonpCallback+"("+page.toString()+")");
/*out.flush();*/
out.close();
}
注:// 解决延迟加载产生异常的问题
JsonConfig config = new JsonConfig();
config.setExcludes(new String[]{"pageModel", "hibernateLazyInitializer","handler","tProvince"});
String page = JSONObject.fromObject(model,config).toString();
5.web.xml映射
<servlet>
<servlet-name>providerProductServlet</servlet-name>
<servlet-class>*.*.*.*.ProviderProductServlet</servlet-class>
</servlet>
<servlet-name>providerProductServlet</servlet-name>
<url-pattern>/providerProductServlet</url-pattern>
</servlet-mapping>