一,什么是REST风格URL
理论参考:理解本真的REST架构风格
个人理解,以注册,登录为例。正常的注册,登录画面的URL应该是这样的
http://localhost:8080/myapp/test/regist.jsp
http://localhost:8080/myapp/test/login.jsp
REST风格的URL
http://localhost:8080/myapp/test/user/regist
http://localhost:8080/myapp/test/user/login
优点和缺点,请参考网上资料
二,Struts2实现REST风格的思路
1,使用RESTFUL插件
详细可参见:Struts2的零配置和REST插件
优点:使用约定而非配置,减少了配置的工作量,使用简单
缺点:自由度较低,(目前没找到如何自定义转发规则)
前台代码中使用的REST URL,做成后不易修改
2,使用Urlrewriter
URLRewriter可以通过自定义重定向规则(rule),当客户端请求REST URL时,根据配置的规则重定向到实际的资源路径。
URLRewriter还可以处理服务端的返回界面,依据规则(outbound-rule)将界面中(JSP)的URL编码成RSET风格。
具体流程参见下图
优点:可配置性强,支持正则表达式匹配
可以方便生成REST URL,容易变更。(开发过程使用正常URL,项目发布时,作统一配置即可)
缺点:所有规则需要手动配置
三,使用URLRewriter实现REST风格的具体流程
1,导入,配置Urlrewrite
jar包下载路径:http://tuckey.org/urlrewrite/
配置web.xml (需要注意filter-mapping的顺序,需要配置在Strust2的过滤器之前执行)
<filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
2,编写urlrewrite.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"> <!-- Configuration file for UrlRewriteFilter http://www.tuckey.org/urlrewrite/ --> <urlrewrite> <rule> <from>/test/user/regist</from> <to>/test/regist.jsp</to> </rule> <rule> <from>/test/user/login</from> <to>/test/login.jsp</to> </rule> <outbound-rule> <from>/test/login.jsp</from> <to>/test/user/login</to> </outbound-rule> </urlrewrite>
3,边界返回用界面(jsp)
/test/regist.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> <%@ taglib uri="/struts-tags" prefix="h"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title><h:text name="registPage"/></title> </head> <body> <div> <a href="lang.action?local=zh_CN¤tUrl=<%=request.getServletPath()%>">中文</a> <a href="lang.action?local=en_US¤tUrl=<%=request.getServletPath()%>">English</a> </div> <p><h:text name="inputRegistInfo"/></p> <h:text name="clickHere"/> <a href="<%=response.encodeURL("/test/login.jsp")%>"><h:text name="login"/></a> <a href="<c:url value="/test/login.jsp"/>"><h:text name="login"/></a> <h:actionmessage /> <h:form action="/test/testRegist.action" method="post" validate="true"> <h:text name="userName"/><h:textfield name="userName"></h:textfield> <h:fielderror> <h:param>userName</h:param> </h:fielderror> <h:text name="passWord"/><h:password name="passWord"></h:password> <h:fielderror> <h:param>passWord</h:param> </h:fielderror> <h:text name="rePassWord"/><h:password name="rePassWord"></h:password> <h:fielderror> <h:param>rePassWord</h:param> </h:fielderror> <h:text name="email"/><h:textfield name="email"></h:textfield> <h:fielderror> <h:param>email</h:param> </h:fielderror> <h:submit key="submit"></h:submit> </h:form> </body> </html>如果需要生成生成REST URL,需参照以上代码,使用
<c:url value="/test/login.jsp"/>进行URL编码,编码后的URL默认在之前会加上项目跟路径。也可以使用
<%=response.encodeURL("/test/login.jsp")/>但使用response.encodeURL,编码后的URL默认不会在之前加上项目根路径
关于JSTL的安装和配置参见JSTL标签库的导入。
JSTL的下载路径:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/jakarta-taglibs-standard-1.1.2.zip
四,效果示意图
相关推荐
Eclipse搭建SSH框架开发学习笔记
myeclipse搭建SSH框架图解,myeclipse搭建SSH框架图解myeclipse搭建SSH框架图解myeclipse搭建SSH框架图解
简单MyEclipse搭建SSH框架登录实例,内容非常详尽,很适合初学者入门
分享是种美德,搭建ssh所需的一些jar包
使用myeclipse快捷搭建SSH2项目
这个里面只有一个整合所需要的jar包,搭建ssh环境所需要的
Eclipse搭建ssh框架,详细的搭建过程,逐步的整合过程!
MyEclipse2014搭建ssh框架傻瓜式一步一步截图搭建
详细描述SSH框架搭建步骤,提供给新手参考
Myeclipse8.5下搭建SSH框架(图解)Struts2.1+Spring3.0+Hibernate3.3
如何搭建SSH2框架 spring自动装配相关注解: @Repository—Dao类自动注入 @Service—业务类自动注入 @Controller—Action自动注入 @AutoWare—自动装配已注入
MyEclipse搭建SSH框架 Struts2.1+Spring3.0+hibernate3.3
eclipse搭建SSH框架详解,详细阐述eclipse下搭建SSH web项目的过程
SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题。下面我介绍一下SSH框架搭建的全过程。
eclipse下搭建ssh环境,eclipse下搭建ssh环境
ssh 三大框架环境的搭建( MyEclipse5.5 JDK 1.6 Java EE 5.0 Tomcat6.0 Struts2.1.6 Spring2.5.6 Hibernate3.3.1 )
教新人搭建ssh框架,myeclipse版的,大部分是工具生成,简单易操作。
里面是SSH框架搭建登录的demo,清楚的描述了SSH框架搭建过程的各种配置,另附博客地址:http://blog.csdn.net/u010539352
myeclipse搭建ssh并实现增删改查,myeclipse搭建ssh并实现增删改查,myeclipse搭建ssh并实现增删改查
是Eclipse基于注解方式搭建ssh框架,使用了jpa注解,实现了注册功能!有数据库博客上也发表了步骤