📄 pushsiservlet.java
字号:
package com.nokia.pgw;
import javax.servlet.ServletException;
import java.io.*;
import java.net.*;
import java.text.SimpleDateFormat;
import javax.xml.transform.Transformer;
import javax.servlet.http.*;
import org.dom4j.*;
import org.dom4j.io.*;
/**
* The PushSIServlet submits a push request
* with a Service Indication to a Push Gateway
*
* Servlet requires three parameters provided in HTTP request:
* ms = MSISDN to send push message
* href = URL of push message service
* msg = Message visible to user of push message
*
* @Nokia, 2001
*/
public class PushSIServlet extends HttpServlet {
// MSISDN parameter name from request
private static String MSISDN_PARAM = "ms";
// URL parameter name from request
private static String HREF_PARAM = "href";
// Message parameter name from request
private static String MESSAGE = "msg";
// Application name
private String _app_name = "MyPushApp";
// Notification URL initial set-up, can be set up in servlet initialisation parameters
private String _notification_URL = "http://localhost/push/notificationInbox.jsp";
// XSLT Transformer object
private Transformer _siTransformer;
// Push Gateway URL address
private URL _pgw;
public void init()
throws ServletException
{
// Load the SI stylesheet as Transformer
try {
javax.servlet.ServletContext context = getServletContext();
_siTransformer = loadStylesheet(context.getRealPath("si.xsl"));
_pgw = new URL(getInitParameter("pgw"));
_app_name = getInitParameter("app-name");
_notification_URL = getInitParameter("notification-URL");
}
catch (MalformedURLException e) {
throw new ServletException("PGW URL is malformed", e);
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
URLConnection connection = _pgw.openConnection();
connection.setRequestProperty("Authorization", "Basic xyzabc123");
connection.setRequestProperty("Content-type", "multipart/related; boundary=multipart-boundary");
Document submission = DocumentHelper.createDocument();
Element si = submission.addElement("si"); // We create a XML doc with a si root element
si.addAttribute("push-id", _app_name + System.currentTimeMillis());
si.addAttribute("URL", getParameter(HREF_PARAM, request));
si.setText(getParameter(MESSAGE, request)); // The message that the user will see
si.addElement("addressee").addAttribute("address", getParameter(MSISDN_PARAM, request));
_siTransformer.setParameter("application-name", _app_name);
_siTransformer.setParameter("notification-URL", _notification_URL);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
String created = formatter.format(new java.util.Date());
_siTransformer.setParameter("time", created);
connection.setDoOutput(true);
submit(submission, _siTransformer, connection.getOutputStream());
PrintWriter writer = response.getWriter();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
writer.println(inputLine);
}
private void submit(Document xmlDoc, Transformer stylesheet, OutputStream out)
throws ServletException
{
try {
javax.xml.transform.stream.StreamResult result = new javax.xml.transform.stream.StreamResult(out);
stylesheet.transform(new DocumentSource(xmlDoc), result);
}
catch (javax.xml.transform.TransformerException e) {
throw new ServletException("XSLT problem", e);
}
}
private void printXML(Node xmlNode, Transformer stylesheet, javax.servlet.http.HttpServletResponse
response) throws ServletException
{
try {
XMLWriter xwriter = new XMLWriter(response.getOutputStream());
xwriter.write(xmlNode);
}
catch (IOException e) {
throw new ServletException("XSLT Response problem", e);
}
}
private Transformer loadStylesheet(String fullPathName)
throws ServletException
{
try {
Transformer transformer = javax.xml.transform.TransformerFactory.newInstance().newTransformer
(new javax.xml.transform.stream.StreamSource(fullPathName));
return transformer;
}
catch (javax.xml.transform.TransformerConfigurationException e) {
throw new ServletException("XSLT Transformer problem", e);
}
}
protected String getParameter(String name, HttpServletRequest request)
{
String value = request.getParameter(name);
if (value == null) value = "";
return value;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -