Tag: Struts
mod_rewrite to bypass security
by Frank Kim on Mar.02, 2009, under HTTP Server, Struts
Many Apache webserver installations use uriworkermap to configure requests are forwarded to Tomcat/JBoss and which are not. This provides a certain level of security. For example:
## APACHE RESOURCES (static files): !/*.gif=myapp !/*.html=myapp ## DISALLOW (security-related filter): !/*.jsp=myapp !/*.xml=myapp ## TOMCAT RESOURCES: /*.do=myapp
However if you dynamically generate your sitemap.xml or any other XML files using a servlet then this security will be a problem since the XML request will not make it to Tomcat/JBoss. This is when mod_rewrite comes to the rescue.
You can set up mod_rewrite to rewrite the sitemap.xml request to be a sitemap.do request.
RewriteRule ^/sitemap\.xml$ /sitemap.do [PT,L]
Then you can set up Struts to forward this request to sitemap.xml.
<action path="/sitemap" forward="/sitemap.xml"/>
Size of collection in a JSP/DSP page
by Frank Kim on May.15, 2008, under JSTL, Page Development, Struts
Sometimes in a JSP/DSP page you will want to get the size of a collection and unless you are within a Range, ForEach or similar droplet you won’t have access to this value.
Struts has a nice solution using the bean:size tag. JSTL 1.1 has a nice solution using the fn:length function.
Here is an example of how to use Struts, DSPEL and JSTL to get the size of a collection.
<dspel:getvalueof param="book.pages" var="pages"
vartype="java.util.Collection"/>
<bean:size id="numPages" name="pages"/>
Number of Pages: <c:out value="${numPages}"/>
Number of Pages: <dspel:valueof value="${numPages}"/>
Here is an example of how to use JSTL 1.1 and DSPEL to get the size of a collection.
<dspel:getvalueof param="book.pages" var="pages"
vartype="java.util.Collection"/>
Number of Pages: <c:out value="${fn:length(pages)}"/>
Submitting a form with a radio button
by Frank Kim on Apr.28, 2007, under JavaScript, JSP, Struts
Submitting a form from a radio button is not common but it is a nice UI which is even better when done with AJAX.
A typical form with two radio buttons would look something like this.
<form action="test.html"> 1 <input type="radio" name="test" value ="1"><br> 2 <input type="radio" name="test" value ="2"> <p><input type="submit" value="submit"> </form>
But with basic JavaScript you can make a simpler form like this.
<script>
function submitAction( form, absPath ) {
form.action = absPath;
form.submit();
}
</script>
<form action="test.html" id="test">
1 <input type="radio" name="test" value ="1" onchange="submitAction(document.getElementById('test'), 'test.html')"><br>
2 <input type="radio" name="test" value ="2" onchange="submitAction(document.getElementById('test'), 'test.html')">
</form>
If you are using Struts the above form’s JSP would be:
<html:form action="test.do" styleId="test">
1 <input type="radio" name="test" value ="1" onchange="submitAction(document.getElementById('test'), 'test.do')"><br>
2 <input type="radio" name="test" value ="2" onchange="submitAction(document.getElementById('test'), 'test.do')">
</html:form>
