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 "<a href=". 3,022 entries found.

You can also try this same search on Google.

RE: Where's the $$ in Java

Danno Ferrin asks "Where's the $$ at in Java?" I don't think I have the answer to this, but I can say that the money has certainly declined in the last year. I wanted to comment on this post, because I think I've found myself an interesting niche. There seem to be few Java Developers that know UI Development stuff like CSS, HTML and JavaScript. When I say know, I mean really know it in the sense that they could construct a good looking web page from scratch. On most of the projects I've been on, sure there have been UI Developers, but that's all they knew was CSS, HTML and JavaScript - they didn't know much Java (if any at all). I'm not saying it's impossible for developers to know both Java and UI Technologies, just that it's rare. So if you want to create a niche for yourself as a Java Developer - learn the UI stuff. If you're a UI Developer, learn the Java stuff. It can't hurt can it?

Posted in Java at Feb 13 2003, 01:22:28 PM MST 2 Comments

Help: Which servers support HTTP Digest Authentication?

In my security chapter, I am describing HTTP Digest Authentication (please correct me if I'm wrong on any of this).

This (HTTP Digest) authentication mechanism identifies a user based on a username and password, and the client transmits the password in an encrypted form such as SHA or MD5. HTTP 1.1-enabled browsers are required to support it, at least according to this page. According to the Servlet 2.4 spec, it is not currently in widespread use, and therefore Servlet containers are not required to support it.

Now for the part I need help on. Which of the following servers support HTTP Digest? Tomcat, JBoss, Resin, Orion, WebLogic, WebSphere and Sun ONE. To test this, in your web.xml you would configure your <auth-method> to be DIGEST:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>My Application</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>My Test Application</realm-name>
</login-config>

According to this implementing WebSphere Security article from December 2002, WebSphere 4 doesn't support it. I wonder if version 5 does? Thanks for any assistance you can offer!

Update: I was missing a required element (<web-resource-name>) in the XML above, and I added <realm-name> for display on the dialog box. Tomcat (v4.1.18) supports DIGEST just fine. The dialogs do change between the types though - the differences are below.

HTTP Basic Dialog Screenshot
HTTP Basic Dialog

HTTP Digest Dialog Screenshot
HTTP Digest Dialog

Posted in Java at Feb 13 2003, 06:42:56 AM MST 4 Comments

XDoclet for Hibernate

A nice community-enhancing developer (I don't know who) has posted an XDoclet for Hibernate tutorial on Hibernate's Wiki. Good stuff. Since the XDoclet doco is kinda cryptic, it'd be awesome if someone did this for Struts. Maybe in my spare time. Oh wait, I have none of that - at least not this week.

I think XDoclet and Hibernate work well together when creating a database schema from scratch. However, I've found that Hibernate's Reverse Engineering Tool works much better for me. It generates the .java and .hbm.xml files for me and I'm done. Hook up a DAO and a DAOTest and I'm done! I might look at Middlegen's recently added Hibernate support in my next class-generation cycle. To my knowledge, it creates an XDoclet-enabled .java file that can then generate the .hbm.xml. However, I'm using a lot of composite-id stuff and XDoclet doesn't seem to support that. From the above XDoclet for Hibernate article:

Note that XDoclet will not be able to support the new composite features.

Posted in Java at Feb 13 2003, 05:22:44 AM MST 1 Comment

RE: Client-side Sorting with the DOM

After working the DOM for the past few days, I'm somewhat motivated to make my table row sorting demo support paging. In reality, it doesn't matter which table-sorting code I use, Erik Arvidsson has a nice example too. My logic is that I usually query a database and return all the rows for a particular table anyway, sometimes based on a search. Since I'm retrieving all these rows from the database, why not send them all to the UI. It might take a bit longer for the initial request, but then again, maybe not. I'm sure it's a different story for 10,000 records, but what if I only ever expect to have < 100 rows. Here's how I think I can do it:

1. Retrieve all the rows and put them in a table.
2. Call a JavaScript function on load that sets all <tr>'s (i.e. var rows = table.getElementsByTagName("tr")) with a rowIndex > 20 to rows[i].style.display = "none".
3. When a user clicks on a page number, do the math and set rows[i].style.display="" or rows[i].style.display="none" to show/hide particular rows.

BTW, I've added support in my local copy of the sortTable.js script to do sorting of <input> elements, as well as <select> elements. I can update the demo if anyone needs this functionality. Also, the W3C has a cool utility to check out what level of DOM support your browser has (based on user agent).

NOTE: I tried to manage my time today to be more productive, and succeeded at most things. I woke up at 3:30 this morning and got an hour and a half worth of editing done. I worked 8 1/2 hours at the office, and was home by 3:30. I was planning on working another 1 1/2 on editing, but it was a nice day so Julie, Abbie and I went on a hike at Red Rocks instead. I met a friend at 5:30 for an hour and a half of hoops, and returned home at 7:30. I got on this damn computer at 8:00 to do my evening editing, but instead ended up blogging and reading blogs for the last hour and a half. A month ago, I'd stay up late and still get my editing done. Not now, Abbie is much more fun and editing just doesn't sound interesting at all.

Posted in The Web at Feb 12 2003, 09:16:46 PM MST 1 Comment

RE: Tiles 201 - Using Controllers

Patrick has published another excellent article on Tiles. This one is titled Tiles 201 and is about using Tiles Controllers. Good stuff to know - especially since I've never used a Tiles Controller (I might now!). I really like the clear and concise way that Patrick writes tutorials. I think we, as open source developers, should do more of this to better explain the technologies we use. So next time you're interested in learning something, I encourage you to write a tutorial on it - I'm willing to bet you'll learn and retain a lot more. If you don't understand something or make mistakes, I'm sure there are many Java Bloggers willing to help you get it right.

Patrick mentions that the Tiles Controller is not discusses in any of the existing Struts books. This sounds like an opportunity for me to include it in my chapter. With Patrick's simple and easily-understood example, this shouldn't take too much effort. Thanks Patrick - great stuff! One question I have - I know that these types of posts take a long time to create/edit and correct. Your blog says "sponsored by browsermedia" - does that mean you get paid to blog in a sense? Meaning - are you writing these articles at work?

Posted in Java at Feb 12 2003, 08:51:54 PM MST Add a Comment

TiVo Upgrade Offer

If you're a TiVo owner, you've probably seen this upgrade offer in your TiVo messages. It looks awfully tempting:

Between now and March 10th (or while supplies last), we're offering you the one-time opportunity to make the switch to Series2 and transfer your product lifetime service. Ramp up your recording space to 80 hrs and gear up for Home Media Option.

For an additional $100, you can get the "Home Media Option" package and access MP3s, Photos, and schedule programs to record from the web. This is a good time management tool if you're a TV watcher. I grew up without a TV, so I don't really like watching TV and I think it's a waste of time. However, Julie is a TV addict - so much that she has to have it on all night while she sleeps. When I do watch TV, TiVo is a must.

Posted in General at Feb 12 2003, 08:25:03 PM MST Add a Comment

Integrating JSP/JSF and XML/XSLT: The Best of Both Worlds

I saw this nugget a few minutes ago on the struts-user mailing list. Maybe I'll even read it... ;-)

For those of you wondering how JSP technologies, including JSP 2.0, JSTL, Struts and the upcoming JavaServer Faces (JSF) 1.0, can work together with XML and XSLT, there is a new article at TheServerSide.com about this subject.

http://www.theserverside.com/resources/article.jsp?l=BestBothWorlds

The article presents the natural evolution of server-side Java programming from basic servlet programming to JSP 2.0 with JSTL and JSF, shows the limitations of the current JSF rendering architecture and how XML technologies can solve them.

The article comes with sample code that shows how to hookup an XSLT transformer with a JSP filter, and includes an experimental XML renderer for JSF.

Posted in Java at Feb 12 2003, 12:40:53 PM MST 1 Comment

[ANNOUNCE] Tomcat 4.1.20 Alpha released

I won't be installing Tomcat 4.1.20 Alpha since Tomcat 4.1.18 has been working fine for me, but the changes are insteresting nonetheless.

Tomcat 4.1.20 Alpha is now available for testing.

Changes over Tomcat 4.1.19 include:
- Fix classloading failures when using Tomcat in JNI mode with JK 2
- Upgrade to Xerces 2.3.0
- Admin webapp fixes (including fixes to saving to server.xml)
- Disable recycling of sessions
- Refactoring of session persistence
- Disable socket linger in Coyote HTTP/1.1 (delay when closing a socket), and allow configuring it
- Allow cross context from the root context
- Documentation updates
- Fix memory leak in Jasper when compiling JSP pages
- Fix JspC, which may now be used again for complex webapps precompilation, such as Tomcat's own admin webapp
- Fix isThreadSafe feature in Jasper
- Fix JspWriter recycling after an exception was thrown in a tag's body content

The release notes include the full list of changes.

[Download]

Posted in Java at Feb 12 2003, 09:52:43 AM MST Add a Comment

Javascript Libraries

I feel the need to post a link to Matt Kruse's JavaScript Toolbox. I needed some JavaScript to move <option>'s from one <select> to another, and I found it via Google in about 10 seconds. I also use Matt's Calendar Popup JavaScript stuff, so his great work is familiar to me. To be fair and provide a fair shake to other great JavaScript libraries, here are a few others I've heard of and sometimes used:

If you know of others, please comment with links and your experience.

Posted in The Web at Feb 12 2003, 07:14:36 AM MST 1 Comment

RE: How do they do it?

Dominic writes, "How in the world do they (Java bloggers) not lose their mind doing all these non-work related projects/activities such as: writing books, opensource development, consulting, etc." Since I do a lot of non-work related activity, I left a comment on his site, basically saying that I have no time-management skills and that the only way I get stuff done is to stretch the bounds of my relationship with my wife. This is because usually I tell her "I have to work tonight" and I get on the computer around 7 PM and join her in bed around midnight or 1. Then I get up at 4 and head into the office, only to do it again the next night (if necessary). I find this really sucks, particularly if I'm working a 40-hour week in 4 days. Since I have a new deadline looming (edit/return Wrox Chapters by Monday), I'm going to try something a bit different. I'm going to work an hour and a 1/2 at night (5:30-7), and then again in the morning (4-5:30) . I'll work an 8 hour day, getting off at 3, then I'll hit the gym and be home by 5. That's just this week, we'll see how it goes. In reality, I've found that the following things work the best for "getting things done."

  • Quit blogging and reading blogs. Same goes for e-mail - this can save 1-3 hours a day for me.
  • Plan your day and leave your computer/location when you say you're going to.
  • If you're reading a book or writing a paper - take it to the library. Go early and stay all day.
  • For me, working on Windows is a good 2-3 times faster than working on my Mac or Linux. Stay with the OS that you're most productive on.
  • When something small comes up that you need to do, just do it.

OK, now I'm going to follow a bit of my own advice and close Outlook and Phoenix.

Posted in Java at Feb 11 2003, 05:47:07 PM MST Add a Comment