Normally, you have a Struts 2 action which is associated with one or more view-layer pages (JSPs normally, but can be other view-layer technology as well) which are applied using <result ...> elements in the struts.xml file (or via annotations, if you're using them). These result view pages can use struts tags.
In the above case, the user will browse to the action, not the JSP page. The action will perform its work, then forward to the view-layer (JSP) page.
The user would never browse directly to the view-layer page. This is how Struts 2 enforces the MVC (Model/View/Controller) design
pattern.
One way to make sure this is followed is by placing the Struts 2 view-layer pages under WEB-INF somewhere. Then they can't be served independently.
Of course, your application can still have JSP pages that are not used as views for Struts 2 actions, they just can't use any Struts tags.
Does that help?