Matt RaibleMatt Raible is a Web Developer and Java Champion. 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 "java". 1,588 entries found.

You can also try this same search on Google.

Password encryption with JavaScript

This morning, I found some scripts to do MD4, MD5 and SHA encryption with JavaScript. If I add these to AppFuse and Roller, it means that a user's password will never be sent in plain-text. Very nice - anyone using any of these scripts? Any reason I should use someone else's scripts instead of the ones I found?

Posted in Java at Mar 22 2004, 06:32:02 AM MST 7 Comments

OGNL 2.6.4 Released

OGNL 2.6.4 was released today. So you're asking - "Why do care? You don't use it?" You're right, I don't use it - but I will be soon. It's the Expression Language used in Tapestry and WebWork - which I hope to learn, beat and abuse in the coming months. I've also had some discussions with Drew about adding it as an EL option to the Display Tag. BTW, with the release of 2.6.4, XWork 1.0.1 and WebWork 2.1 will be released very soon - quoted from the WebWork mailing list.

A lot of the WW and Tapestry folks swear by it and claim it's vastly superior to JSTL's EL. As far as I can tell, it has some more advanced features (i.e. the ability to call a method), but it's not *that* much better. It's not going to revolutionize my webapp productivity - is it? Of course, Jason and Erik will argue that [ insert WebWork or Tapestry here ] is the real productivity enhancer. Personally, it's not the MVC frameworks that slow me down. It's the meetings, the requirements gathering and the UI tweaking (CSS and JavaScript) that takes the most time - as well as the occasional fumbling with Hibernate. That's unlikely to go away no matter what MVC framework I use.

That's why I use AppFuse - b/c most of the CSS and JavaScript I use on a project is already in there. A little massaging here and there, and the UI tweaking for the whole app can be done in a matter of hours. Of course, Tiles helps tremendously with this - as Sitemesh would I suspect.

I think what helps me the most about AppFuse is having a structured process for developing webapps. Create POJO -> Create DAO -> Create Manager, etc. I suspect that my process will stay the same with Tapestry and WebWork - so that's why I'm not afraid to learn them. The productivity-enhancing attributes of AppFuse will not go away with a new framework, but some parts may become a bit easier. Of course, you can bet that if I trip and fall along the way (which I likely will), you'll be able to hear about it here. Maybe someday this site will get as many hits for these frameworks as it does for Struts (up to 914 before this post).

Posted in Java at Mar 21 2004, 01:34:28 PM MST 1 Comment

The first day of Spring

March 20th, the first day of Spring. Today's forecast - 65° F. Yesterday it was in the 80s. I gotta admit - I do love Spring. Especially when it might be the first day of another Spring. Clever huh?

Spring in Amsterdam

I tested the latest code from CVS and it all looks good to me!

Posted in Java at Mar 20 2004, 07:33:14 AM MST Add a Comment

No more Struts in services layer

Yesterday, I did some more refactoring on AppFuse and got rid of Struts in AppFuse's services layer. Basically, I was using business delegates (a.k.a. Managers) to convert POJOs -> ActionForms and vise versa. So now the question is - why do I even need Managers and why don't I just talk directly to DAOs (as most sample webapps do)? I think the best justification is that Managers can be used by rich client apps and it abstracts the DAO implementation a bit more.

The question is - is there any point to using Managers in a webapps that will always be webapps (no rich client)? To be honest, probably not - but it does make for easy testing of the business logic. The main reason I did a Struts-purge is to get ready for adding other MVC options - most of which allow me to use POJOs in my view. I'm looking forward to adding Spring and WebWork support and I'm willing to bet these solutions will be a bit cleaner. Unfortunately, neither of these frameworks offer client-side validation support, but the good news is it's coming.

The best part about yesterday's refactoring? I ended up deleting more code than I added - which is always a good thing.

Posted in Java at Mar 18 2004, 06:58:16 PM MST 16 Comments

Hibernate wins Jolt Award!

I'm at the Jolt Awards as part of the SD West conference. We're jacked right now on Jolt gum and just watched Hibernate win the Jolt Award for the Libraries, Frameworks and Components category. Congrats guys - that rocks!

Posted in Java at Mar 17 2004, 08:24:06 PM MST Add a Comment

Sunny California

I'm sitting in sunny Santa Clara, CA right now - getting ready to join the rest of the SourceBeat crew at SD West. The best part so far? Besides the weather, there's a rumor they're servin' good ol' Colorado Beer at tonight's event. Coors Light. Certainly not my favorite, but a cold beer and tech talk always go well together. ;-)

Also very cool is the high speed wireless internet throughout the hotel.

Posted in Java at Mar 16 2004, 05:53:58 PM MST 3 Comments

One Year Ago - Wrox goes under

Pro JSP, Third EditionI was on vacation at my sister's when I found out. I'd just finished the final edits on my chapters and it was time to party. But then, one year ago today, I read (via weblogs) that Wrox was going under. Today, it's nice to look back and see that Pro JSP did get published.

You'd think after 6 months, we'd start to see some royalties. Nope. Nothing. Maybe it's not selling enough copies for the authors to get our $5/year cut. ;-)

Posted in Java at Mar 15 2004, 11:10:00 AM MST 10 Comments

[Struts Menu] Building Dynamic Menus from a database table

I spent a few hours this weekend and did some work on Struts Menu. At the very least, I made it easier to build dynamic menus programmatically and put together an example of doing it from a database table. I also added support for Expression Language (EL) syntax in all the tag's attributes. For the EL implementation, I simply copied what was implemented in the DisplayTag. I don't know that it's the best way (two TLDs, subclassing tag classes), but it works and it is good enough for now. The main reason I copied the implementation in the DisplayTag is that we've been talking about adding support for OGNL. I figure if I copy the implementation, it should be easy enough to copy the refactorying if/when it happens.

Back to the point of this post - how do you build dynamic menus? So without further ado, here's how to build and display database-driven menus with Struts Menu.

Posted in Java at Mar 14 2004, 04:53:33 PM MST 4 Comments

[DisplayTag] SQL Tags and Editable Tables

Fabrizio (the lead developer on the display tag project), took my hack for supporting JSTL's SQL Tag and turned it into a nice feature. The display tag now supports Maps and you can iterate through JSTL's Results using the regular tag or the EL-enabled version. Download nightly build - now automated!

As an exercise for the NYC conference, I implemented an editable table using the display tag. It's a bit ugly, but it does work. You're more than welcome to use it and improve it. ;-) To see it, checkout the following demo pages in AppFuse:

Any feedback would be great.

Posted in Java at Mar 11 2004, 08:52:26 PM MST 8 Comments

Velocity Templates in RTF

For most of this week, I've been developing Velocity templates for rendering resumes in HTML and RTF (Word). Thanks for Mathias once again for showing me this was possible. The HTML part has been pretty easy, but the RTF stuff has been a bear. Mostly because I want to hide/show different sections of a person's resume based on whether they've entered information or not. In order to do this, I first created a rough draft of the RTF template in Word and then I began hand editing it with a text editor (HomeSite and BBEdit). And if you look at the RTF syntax, it's pretty damn ugly. The main thing I'm struggling with now is showing hiding rows of a table based on whether data exists or now. In HTML - it's easy - you just put your #if statement before a <tr> and you can easily hide the row. In RTF - it seems like the number of rows/columns/borders, etc. is all defined at the beginning of the table - but I can't really read the syntax well enough to understand it.

Therefore, my question is - does anyone know RTF well enough to tell me how I can hide a row? Is there something in the beginning of the table definition I can modify with Velocity #if statements? For now, I'm simply putting "Not Specified" text in rows where no data exists.

Finally, how about some RTF syntax I've learned in this process:

{\f116\fs20 = Verdana 10pt Font
The document must end with " }}" (no quotes) on the same line as the last bit of text
Escape "\n" with "\\par "
{\b\f116\fs24\cf17 = Bold, Verdana, 12pt, Ocean colored Font

How's that for a bunch of useless information! ;-)

Posted in Java at Mar 11 2004, 10:51:18 AM MST 4 Comments