首次HTML+java后台实践笔记
工具:eclipse
目的:使用java后台,套用struts框架,实现HTML项目的后台逻辑处理
实现效果:在html页面的js中发送ajax请求,获得java后台的返回数据
1. 新建Dynamic web project项目,生成空项目
项目结构如下:
-ddd
|--Deployment Descriptor :ddd
|--JAX-WS Web Services
|--Java Resource
|--JavaScript Resource
|--build
|--WebContent
|--META-INF
|--WEB-INF // 放置html页面
|--lib // 放置引用的与网页相关的jar包
|--web.xml // 添加struct2过滤器 与映射
2. 添加struts2过滤器
// web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher> <!--这两行很重要不配的话无法转发到action-->
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
3. 在Java Resource目录下 添加struts.xml 用于映射方法查找
// struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="getVisitorCount" class="UserAction" method="getVisitorCount"></action>
<action name="setVisitorCount" class="UserAction" method="setVisitorCount"></action>
// action-name: ajax的请求地址
// action-class: Java Resource目录下的对应java文件,用于后台逻辑处理
// action-method: 在action-class指向的java文件中,查找对应的方法名称
</package>
</struts>
4.实际的java后台逻辑处理
// Java Resources/src/UserAction.java
public class UserAction extends ActionSupport {
HttpSession session = getSession();
HttpServletRequest request = getRequest();
HttpServletResponse response = getResponse();
HashMap<String, Object> data = new HashMap<String, Object>();
public String getVisitorCount () throws IOException {
// data是一个预定义的HashMap类型的数据
// 通过.push方法传入键值对
// 通过JSON.toJSONString(data)解析成常用的json数据类型
data.push(key,value);
try {
response.getWriter().write(JSON.toJSONString(data));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private HttpSession getSession() {
HttpSession session = ServletActionContext.getRequest().getSession();
return session;
}
public HttpServletRequest getRequest() {
HttpServletRequest request = ServletActionContext.getRequest();
return request;
}
public HttpServletResponse getResponse() {
HttpServletResponse response = ServletActionContext.getResponse();
return response;
}
}
5.在js中发出ajax请求,调用java后台
// jQuery Ajax请求
function sendAjax(){
$.ajax({
type: "post",
url: "getVisitorCount", // url字段即为struts.xml中的action-name字段;struts将完成action转发,查找对应方法
data: {"para":1},
cache: false,
async : true,
dataType: "json",
success: function (data)
{
// success operation
},
error:function (XMLHttpRequest, textStatus, errorThrown) {
// failure operation
}
});
}
sendAjax();