Matt RaibleMatt Raible is a writer with a passion for software. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.
You searched this site for "struts". 749 entries found.

You can also try this same search on Google.

A Good Job vs. Good Pay

I did the interview with the University of Miami this morning. I was interviewed by a roundtable of folks and the questions weren't too bad - there were some fun ones and some technical ones (i.e. the classic, "what's the difference b/w an interface and an abstract class"). The people sounded very cool and it'd probably be a great team to work on. The pay, however, is not very good at all. However, they said they'd try to work on that. The itneresting thing I've learned is that the best paying jobs are usually the worst jobs. At least that's how it's been for me. I don't know if people just expect more from you, and portray this in the form of micro-management or what, but it sucks to have a job you don't like.

My current job? I love it. Not only because we're using all the cool technologies I like (Ant, Struts, Hibernate, XDoclet, etc.), but also because the people are very cool. Our 8:30 a.m. meetings are actually fun to attend. We poke fun at each other and there's lots of laughter in the room. Today has been an especially good day - I got club level seats to the Rockies Game (baseball) tonight, and also got invited to a pre-release viewing of Matrix Reloaded. Now those are what I call benefits! And, unfortunately, I'm also making the same rate I made six months after I graduated from college. Back then, I couldn't believe how much I was making, and now it's enough to support Julie, Abbie and I (and I'm the only one who works), so it's not too bad.

The problem is the gig at U of M pays around 1/2 of what I'm making now. It'd be an awesome job though. It sounds like they have great people and I'm sure the perks are good (maybe free tuition for my masters?). Look at me talking like I already got the job - I probably just jinxed myself - especially since I gave them the URL to this site. Oh well, if you guys are reading - it sounds like an awesome position, but I don't know if I can support my family on that salary. In fact, I've had such little luck finding a decent paying job in Florida, Julie has started considering a non-move. That is, we might stay in Denver. Jobs here seem to be picking up, and my current contract doesn't seem to have any end in site. They're even talking about putting us on a project developing mobile apps in Java.

Miami is calling though, especially on this cold April afternoon. Now I'm off to freeze my ass off at the Rockies' game. Good thing they're club level seats so we can just sit inside if it's too cold.

Posted in General at Apr 18 2003, 04:35:00 PM MDT 2 Comments

My Roller To Do List

I'd like to add some additional features to Roller. Don't worry, I won't add them for a couple weeks (if I add them at all - being a Dad and husband is way more fun and satisfying than being a developer). Dave is imposing a code freeze this weekend and I don't want to mess anything up for the 0.9.7 release. Especially since we really need to get a release out - there hasn't been one since November 2002! Here's what I want to add after the release:

  • Joe Hewitt-style comments. Big surprise - it doesn't work in Opera 6/7. I'm not surprised as I despise that browser and pity anyone that uses it.
  • Use Tiles for the Editor layout and implement the Validator for validating fields. With the latest XDoclet, this will be a breeze, but could cause issues with the UI, so a good idea to implement after the release. A good strategy for implementing this would be to write a bunch of test cases with StrutsTestCase for Actions and Canoo's WebTest for JSPs.
  • Possibly this idea for highlighting entries added in the last few hours.
  • Implement struts-menu as an optional menu in the Editor to reduce the number of clicks to get to a page.

Unfortunately, none of these are on the fix me, I'm a popular bug list. Aaaahhh, the beauty of open source development: 1) you don't have to work on it at all if you don't want to, 2) you only have to implement the features you want, and 3) there are no deadlines.

Of course, if Roller's goal is to be the most popular Java-based blogging software, then squashing the bugs on the popular list is probably the best thing to do, but I don't think that's Roller's goal. I believe Roller's goal is to provide a learning environment for Java developers to tinker with. Besides, I think blojsom will win the popularity contest. Why? Because it's easy to setup and Roller isn't. Roller doesn't have chance until it can be setup in 5 minutes or less.

Posted in Roller at Apr 16 2003, 10:24:32 AM MDT 2 Comments

Use XForms now with XMLForm

Remember XForms (the next generation of HTML Forms)? How about XMLForm? From their homepage:

This is a standalone servlet toolkit inspired by Apache Struts / JavaServer Faces and W3C XForms. The toolkit is derived from Apache Cocoon and a best effort will be made to maintain the features in sync with the Cocoon module.

For an introduction to the concepts, see: XML Forms, Web Services and Apache Cocoon

XMLForm uses W3C XForms based markup and automated server-side binding to JavaBeans, XML/DOM, JDOM and DynaBeans data models. It also allows easy deployment of REST style Web Services, with maximum code reuse between human facing and machine interfaces.

Wow! Sounds very cool. Thanks to Vic for the link.

Posted in Java at Apr 05 2003, 11:19:01 AM MST Add a Comment

Struts Training: Week 5

I'm dialed in and listening to Don Brown presenting on Struts and XML/XSL. Don is a lucky guy - he's presenting from Hawaii this morning, where I'm assuming he lives. The bad part for him - it's 5:30 in the morning there. Don is one of the developers of Stxx and has also developed a Cocoon plugin for Struts. He works for DigitalNet and currently is working on a contract for the Navy. Hmmm, wonder if they're hiring - I'm willing to bet that Julie would consider moving to Hawaii! Enough dreaming - onto the presentation.

The following are types of XML/XSL Extensions for Struts:

  • XSL-based
      - stxx
      - StrutsCX
  • XML pipeline-based
      - Cocoon Plugin

stxx: features
  - replaces JSP with XSL
  - in action, create XML manually, or get it from another source
  - stylesheet selection based on criteria like browser type
  - automatic serialization of ActionErrors, resources, and request objects
  - extendable to support any object serialization or XML transformation technology
  - supports both Struts 1.0 and Struts 1.1

Pretty cool - for Struts 1.1, there's a Stxx plugin, and you use a .dox extension to indicate it needs transformations. In a stxx-transformations.xml, you define "transformations" that define XSL stylesheets, where to run at (client|server), and mimeTypes (html|xml|pdf). Sweet - maybe I can use this sucker for struts-resume! I wonder how Stxx compares with StrutsCX. Since Stxx can be plugged-in and can co-exist with JSPs, it might be the right path for me.

Advantages of Stxx: Simple, use of caching makes tranformations quick, can be used with Velocity or Cocoon, lighweight, very extendable.

Disadvantages: XML pipeline very limited, poor scaling of message resources (if ApplicationResources.properties in huge - i.e. > 1MB), requires all data to be gathered in Action (MVC-push).

Compared to StrutsCX - Don says that it's very similar, except that StrutsCX supports the Validator. As for the Cocoon Plugin, it supports all the features of Cocoon. Describing the features of this plugin seems pointless as I would just be describing features of Cocoon. For the Cocoon PlugIn, you define it the same as a regular plugin, and then change your path to point to an XHTML-compliant JSP. Apparently, Don has modified the struts-example app to use the Cocoon PlugIn, so hopefully I can provide a link to the download.

Here are some resource links from Don's presentation that might interested you:

As for my presentation on Remember Me and XDoclet, you can find those slides here. The slides (and lab) uses a simple JSTL-based app I whipped up last weekend. I'm planning on hooking it into a database eventually to allow online editing of a presentation, but I probably won't do that until I give another presentation.

Posted in Java at Apr 05 2003, 09:35:09 AM MST Add a Comment

Bad Cables?

I'm still experiencing issues with my Internet Connection, and I'm still blaming my ISP. Especially since I went out and bought a new router and everything. Now I have internet access, but it's intermittent and flaky. It's so flaky, in fact, that anytime I've needed to ssh into this site's server or check in to CVS at SourceForge, I've had to dial-up. However, an ingenious idea hit me this morning. Since the original problem was a bad cable between my ISP's bridge and my router, maybe more cables could be bad. So I stuck one of my wireless cards in my box, and Voila! I'm surfing like the wind again. I guess I'll have to stop at a store and see if they have an "ethernet cable tester".

I'm off to work. I'll be broadcasting my presentation (via WebEx) from there today since I didn't trust this connection up until now.

Posted in Java at Apr 05 2003, 07:42:24 AM MST 1 Comment

[ANNOUNCE] Struts Resume and AppFuse 0.7 Released!

There's nothing like tootin' your own horn. What's even worse is checking all this stuff into CVS and then uploading it on a dial-up connection. Anyway, here it is - the latest and greatest version of struts-resume and (finally) a version of appfuse. AppFuse is basically struts-resume w/o any resume stuff. There's not much new that's visible for struts-resume, the only real things are User Administration (no add, just list/delete/assign roles) and a smart-menu that stays expanded based on your previous selections. Here is a full list of what's new in 0.7 (both apps):

Features in 0.7
===============
- Upgraded to Hibernate 2.0 Beta 4.
- Upgraded to Struts 1.1 nightly build (2003.03.26) to fix Validator issue.
(http://tinyurl.com/87xa)
- Upgraded DBUnit to 1.6-dev to fix batchStatement error in Ant task.
(http://tinyurl.com/8ei2)
- Upgraded Canoo WebTest from build265 to build276.
- Upgraded XDoclet to nightly build (2003.03.28) for Hibernate 2.0
compatibility. Apache module is still customized for POJO -> ActionForms.
- Upgraded Display Tag Library to version 0.8.5.
- Renamed "test-canoo" task to "test-jsp".
- Added "db-load" as a dependency to running unit tests to get a fresh
database each time.
- In LoginServlet.java and BreadCrumbFilter.java, pre-pended contextPath
to authURL (i.e. "j_security_check") to get absolute path.
- Added User Administrator to list/edit/delete users. This feature
includes using indexedProperties on a form - still using XDoclet, but using
a subclass of UserForm, called UserFormEx to hold the getter/setters for
the indexedProperties.
- Wrote more Cactus and Canoo Tests to verify Resume editing and User
Administration functioned properly.
- Added icons to success and error messages template (common/messages.jsp).
- Implemented role-based Permissions on menu by adding
permissions="rolesAdapter" to in menu.jsp.

I've put a line through the renaming of "test-canoo" to "test-jsp" because it's in the README (part of the download) and I don't want to re-upload just because of one stinkin' line.

Tomorrow, I'm actually presenting for the Struts Training class, so I won't be able to give a full review. One of the gents who wrote Stxx will be presenting first at 8:30 MST, and then I'm up for my preso. I'm going to do some short and sweet stuff on Remember Me and XDoclet with Struts. If you're interested, you can do the labs I put together. I'll post the slides when I'm done presenting.

Posted in Java at Apr 04 2003, 11:56:25 PM MST 3 Comments

How do I implement password rules?

Does anyone know of any open source packages or techniques for implementing password rules. For instance, I need to implement the following rules for password in my application:

Passwords must be made up of at least three (3) of the four (4) following 
classes of characters: Lowercase letters, Uppercase letters, Numbers, Special 
Characters.

I can probably whip up some JavaScript for this, but I'd need server-side code to catch if JavaScript is disabled. I'm guessing this is not possible with regular expressions.

Posted in Java at Apr 04 2003, 10:36:31 AM MST 7 Comments

Struts FAQs

Every Struts Developer should probably read Sciosorks Struts FAQ. Good stuff there. Bookmark it and use it.

I rode my bike into work for the first time this year. I got lost, so it took me 20 minutes longer than it should have. Door-to-door: 1:45. I wonder how long it'll take me to get home tonight.

Posted in Java at Apr 02 2003, 11:01:05 AM MST Add a Comment

Dial-Up: 28.8

That's right, I'm posting this message on dial-up since my ISP can't fix my internet connection. Today they said they'd send someone out in a week. That sucks - dial-up for a week. Oh well, productivity will rise, blogging and reading of blogs will decline - which can't really hurt. The choke hold will come when one of my friends sends me the 1MB attachments that they're used to sending. The worst part is that I'm doing a WebEx presentation for the Struts Training class this week and I have to go into my office to do it, rather than in the comfort of my own home. Luckily, the guys I work for are letting me use my work computer - thanks gents!

Posted in Java at Apr 01 2003, 10:49:26 PM MST Add a Comment

Cool TagLib Document

I found this gem on the strut-user list tonight.

* TaglibDoc
    This is a JavaDoc-like set of html and css files for browsing the
    taglib documentation.  Here's what this target does (I ran this
    about 15 minutes ago):

      http://struts.sourceforge.net/struts-atlanta/taglibdoc/

* TaglibReport
    This target will generate a grid-like view of the taglibs and their
    attributes so that you can see every tag in a typical package side
    by side.  This helps when comparing which tags implement a certain
    attribute, by allowing you to view them side by side and not have to
    look up each tag by hand. (also about 15 minutes ago)

      http://struts.sourceforge.net/struts-atlanta/taglibreport/

Project by Mohan Kishore, posting by James Mitchell.

Posted in Java at Mar 30 2003, 07:23:25 PM MST 2 Comments