Если Вы думаете, что URL не могут содержать код, думайте снова!
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
Read, что, и плачут.
Вот то, как мы делаем это на Переполнении стека:
///
/// returns "safe" URL, stripping anything outside normal charsets for URL
///
public static string SanitizeUrl(string url)
{
return Regex.Replace(url, @"[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]", "");
}
Я бы рекомендовал вам начать с изучения Servlet-API , который поддерживает все, что связано с HTTP-запросами и ответами в мире Java. HttpServletRequest
и HttpServletResponse
охватывают очень много вопросов. Причал - хороший выбор здесь; есть хорошее введение о Clojure и Jetty на http://robert.zubek.net/blog/2008/04/26/clojure-web-server/ (с использованием Jetty 6).
Это значит Как сказал, базовая модель Compojure также довольно низкоуровневая: она просто обертывает запросы и ответы в Clojure-datastructures, но вы по-прежнему несете ответственность за всю маршрутизацию, генерируя правильные коды ответов. создание ETag
и т. д., который иногда является более низкоуровневым материалом, чем с LAMP-стеком.
ETag
и т. д., что иногда является более низкоуровневым материалом, чем с LAMP-стеком. но вы по-прежнему несете ответственность за всю маршрутизацию, генерируя правильные коды ответа. создание ETag
и т. д., который иногда является более низкоуровневым материалом, чем с LAMP-стеком. Если вы не хотите использовать Compojure или другие, вам нужно либо загрузить веб-сервер и вызвать свой JAR-файл, либо написать веб-сервер с использованием сокетов. В этом смысле вы можете следовать любому из множества руководств в Интернете по настройке, а скомпилировать JAR
Это похоже на то, что вам нужно.
Одна вещь, которую следует отметить, если вы собираетесь использовать FastCGI, это то, что java не похож на другие языки сценариев, есть время запуска для запуска JVM, в отличие, скажем, от ruby или python. И запускать JVM для каждого запроса - сложная операция.
Если я правильно понял ваш вопрос, вы ищете собственный Java-способ для создания приложений. Если это так, то compojure делает именно то, что создает сервлет для вас за кулисами, так что в конце вы можете создать веб-приложение clojure, точно такое же, как в java, и развернуть его на любом сервере приложений.
Хорошо, вы можете правильно использовать FastCGI прямо из clojure . FastCGI - довольно простой протокол, поэтому написать сервер на Clojure не должно быть так уж сложно (я сомневаюсь, что есть библиотека для этого для clojure, но вполне может быть такая для Java).
Очень простой способ начать - создать сервлет, работающий на Tomcat или подобном, например:
(ns servlet
((:gen-class :extends javax.servlet.http.HttpServlet))
(defn -doGet
[_ request response]
(.setContentType response "text/html")
(let w (.getWriter response)]
(.println w
(str "<html>"
"<head>"
"<title>Hello World!</title>"
"</head>"
"<body>"
"<h1>Hello "
(.getParameter request "Name")
"</h1>"
"</body>"
"</html>"))))
(defn -doPost [_ request response]
(-doGet nil request response))
затем создать web.xml в папке WEB-INF
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Clojure Servlet</display-name>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
скомпилируйте и упакуйте это в войну, и он будет вести себя как обычный сервлет Java. Для развертывания на Tomcat просто поместите war в папку webapps и запустите tomcat.
Подробный пример доступен здесь http://github.com/yogthos/clojure-maven-examples