며칠전 스프링 3.0.4가 나왔다. 3.0.1 이후 마이너 업그레이드는 거의 자잘한 버그 수정이거나 최신 버전 서드-파티 툴 지원(확인)이 전부였는데 3.0.4에는 눈에 띄는 새로운 기능이 추가된 것이 있다. @MVC에서 세 가지를 찾아 볼 수 있다.  @ModelAttributge 모델이 아닌 단순 @RequestParam 등에서도 포매터를 사용하게 된 것과 mvc 스키마에 새롭게 추가된 전용 태그 두개이다.

3.0.4 내용을 모두 확인하고 추가된 기능 등을 토비의 스프링 3에 반영해서 다음 인쇄시 적용해 달라고 할 수도 있겠지만, 버전 업그레이드를 시도하는 것은 생각보다 부담이 큰 작업이다. 3.0.4만 해도 개발 스타일을 바꾸고 싶은 것이 있어서 예제도 손을 좀 봐야 하고. 그래서 일단 블로그에 그런 내용을 정리해보기로 했다.

 

3.0.4의 변경사항 중에서 그 중에서 가장 내 관심을 끈 것은 바로 <mvc:default-servlet-handler/>이다. 이를 이용하면 그동안 안쓰자니 불편하고 쓰자니 지저분해 보였던 UrlRewriteFilter를 제거할 수 있게 됐다. 그런데 UrlRewriteFilter 따위는 왜 쓰게 됐을까?

여러 가지 이유를 댈 수 있겠지만 가장 큰 것은 RESTful 스타일의 URL을 사용하고 싶기 때문이다. RESTful 스타일 URL의 특징의 하나는 확장자를 쓰지 않는 것이다.  기존엔 주로 컨트롤러에 매핑되는 URL을 login.do니 login.action이니 하는 식으로 특정 확장자를 주어서 만들었다. 그래서 스프링의 프론트 컨트롤러인 DispatcherServlet의 서블릿 매핑을 *.do나 *.action 처럼 주면 됐다. URL의 서브 디렉토리는 어떻게 잡아도 상관없어서 이 방식이 가장 편하긴 하다.

그런데 RESTful 스타일에선 이렇게 확장자를 잘 쓰지 않는다. 여러가지 스타일이 있지만 보통 리소스 이름을 경로로 쓰고 그 뒤에 의미있는 추가 경로를 붙이거나 HTTP요청 메소드(GET,POST,PUT 등등)를 바꿔서 활용하는 식이다. 그래서 URI가 보통 /user니 /user/1, /user/1/edit 이런식으로 만들어진다. 따라서 특정 확장자를 사용할 수 없다.

문제는 스프링이 이런 URL을 처리하게 하려면 웹 애플리케이션에 기본으로 등록된 다른 서블릿과 중복이 되지 않게 만들어줘야 한다. 보통 서블릿 컨테이너에는 스태틱 리소스(HTML, 자바 스크립트, CSS, 이미지 등)를 처리하는 디폴트 서블릿과 JSP를 처리하는 JSP 서블릿이 기본으로 등록되어있다. 디폴트 서블릿은 /에 매핑되어 있고 JSP는 확장자를 이용해서 *.jsp로 되어있다. 그리고 여기에 추가로 서블릿을 등록하면 URL 우선순위(매핑 조건이 긴게 우선)에 따라서 그 서블릿의 매핑에 해당하는 것은 등록된 것으로 가고 나머지는 디폴트 서블릿이나 JSP 서블릿이 담당한다. 스프링을 *.do와 같이 사용할 땐 그래서 문제가 없었다. 그런데 경로만 있는 URL로 가니 얘기가 달라졌다.

디폴트 서블릿을 안쓸 수는 없다. 따라서 스프링 서블릿(DispatcherServlet)을 /에 매핑할 수는 없다. 그러면 DispatcherServlet가 모든 스태틱 리소스까지 처리해줘야 한다. 그래서 보통 /app와 같은 서브폴더를 만들고 그 아래로 오는 요청을 스프링의 DispatcherServlet이 담당하게 만든다. DispatcherServlet의 매핑을 /app/나 /app/* 등으로 하고, URL은 /app/user, /app/user/1, /app/user/1/edit 이렇게 썼다.

그런데 app가 계속 붙으니 안이쁘다. 폼나게 RESTful하게 보이려면 도메인 이름 뒤에 바로 리소스 이름이 나오는게 좋다. 그냥 http://toby.epril.com/article/1 이런 식으로.

그래서 스프링 사용자들이 슬슬 사용하기 시작한게 UrlRewriteFilter다. 이 필터는 서버로 온 URL을 애플리케이션으로 넘길 때 강제로 변경해주는 역할을 한다.  UrlRewriteFilter은 서블릿의 매핑보다 세밀한 제어가 가능하기 때문에 원하는 방식으로 URL을 작성할 수가 있다. 일단 모든 스태틱 리소스는 /resource 등에 위치시킨다. 그리고 스프링 DispatcherServlet은 그냥 /app와 같은 서브 폴더에 매핑시킨다. 그런다음 UrlRewriteFilter를 적용한다.

스태틱 리소스인 /resource는 그냥 /resource로 그대로 가도록 한다. 대신 그 외의 /로 시작하는 경로는 앞에 /app를 붙이도록 만들어주는 것이다. 그러면 /resource로 시작하지 않는 모든 URL은 /app가 앞에 붙어서 넘어가므로 /app로 매핑을 해둔 DispatcherServlet처리하고 나머지는 그대로 URL이 유지되므로 디폴트 서블릿이 처리할 수 있는 것이다.

이렇게 해서 깔끔한 URL을 만들어 사용할 수 있긴한데, 제법 복잡한 UrlRewiteFilter를 공부해서 사용해야 한다는 번거로움이 있다. 그래서 책에도 UrlRewriteFilter를 사용하는 방법을 넣을까 하다가 독자들 머리만 더 아플까 해서 그냥 뺐다. 예제도 덜 이쁘지만 /app로 시작하는 URL을 그냥 사용하도록 했고. RESTful URL을 사용하는 ROO에서 사용한 UrlRewriteFilter를 보면 꽤나 복잡하다.

그런데 이런 불만이 나만 있던 것은 아니었나보다. UrlRewriteFilter를 쓰지 않고 스프링 DispatcherServlet을 /에 매핑해서 쓰면 안될까? 스프링에 안되는 게 어딨겠나. 결국 스프링 개발자들은 3.0.4에서 <mvc:default-servlet-handler/>를 추가해서 이 문제를 깔끔하게 해결해버렸다.

 

사용방법은 간단하다.

일단 DispatcherServlet을 그냥 /에 매핑한다. jsp와 같은 특정 확장자를 가진 URL말고는 모두 DispatcherServlet이 다 받는다. 일단 스프링의 기본 등록된 핸들러 매핑 전략을 이용해서 컨트롤러를 매핑해본다. @Controller가 담당하는 URL이라면 그리로 넘어갈거고. 그런데 그러다보면 /js/jquery.js 처럼 컨트롤러에 매핑안되는 URL이 나올 것이다. 이런 나머지 모든 URL은 <mvc:default-servlet-handler/>이 내부적으로 등록해주는 DefaultServletHttpRequestHandler이 담당한다. 이 핸들러(컨트롤러)는 /**로 매핑되어있다. 대신 핸들러 매핑 우선순위가 가장 낮다. 따라서 애노테이션 매핑 등등을 거쳐서 다 실패한 URL만 넘어온다. 그리고 DefaultServletHttpRequestHandler는 이 요청을 자신이 직접 스태틱 리소스를 읽어서 처리하는 것이 아니라, 원래 서버가 제공하는 디폴트 서블릿으로 넘겨버린다. 그러면 서버의 기본 디폴트 서블릿이 동작해서 스태틱리소스를 처리해버리는 것이다. 일단 스프링이 다 받고 스프링이 처리 못하는 건 다시 서버의 디폴트 서블릿으로 넘긴다는 아이디어이다. 멋지지 않은가?

그런데 사실 아이디어는 간단하지만 구현은 쉽지 않다. 디폴트 서블릿을 찾아서 사용하는 건 일반적인 접근방법이 아니다. 서블릿 스펙 2.0 부터는 하나의 서블릿이 다른 서블릿을 직접 찾아서 실행할 수 있는 방법을 막아버렸다. 그래서 ServletContext의 getServlets() 나 getServletNames()와 같은 메소드는 무조건 null을 리턴하도록 스펙에 명시되어있다. 대신 스프링은 URL 대신 이름을 이용해서 RequestDispatcher를 가져오는 getNamedDispatcher() 메소드를 이용한다. 물론 디폴트 서블릿 이름을 알고 있어야 하는데, 그건 스프링 개발자들이 주요 서버의 디폴트 서블릿 이름을 다 조사해놨다. 톰캣, 제티, JBoss, 글래스 피시는 이름이 default, Resin은 resin-file, WebLogic은 FileServlet, WebSphere는 SimpleFileServlet이다. 이 서버들의 디폴트 서블릿 이름은 자동으로 찾아준다. 그 외의 서버라면 디폴트 서블릿 이름을 직접 주면 된다. 보통 서버의 설정 폴더에 보면 디폴트 web.xml이 다 나와있다. 그걸 열어보면 디폴트 서블릿 이름을 알 수 있다. 톰캣이라면 conf 밑의 web.xml에서 찾을 수 있다.

톰캣 6에 보면 디폴트 서블릿이 다음과 같이 등록되어있다.

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
     …
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

 

이제 3.0.4를 사용하면 특별한 이유가 아니라면 UrlRewriteFilter를 사용할 필요가 없다. 혹시 스태틱 리소스의 경로를 다이나믹하게(버전 폴더를 바꾼다거나) 바꾸는 필요가 있다면, 그때는 3.0.4에 함께 추가된 <mvc:resource>를 사용하면 된다. 그건 다음 시간에.

참. GAE에서는 이 기능을 사용할 수 없다. 구글이 수정한 GAE의 Jetty 소스를 보면 이 getNamedDispatcher()가 항상 null을 리턴하도록 해놨다. 리소스 접근에 제약을 걸어야 하기 때문에 코드를 통해서 디폴트 서블릿에 접근하는 것을 원천적으로 차단한 것이다.

Related posts:

  1. Spring 3.0 (22) Web.Servlet 모듈의 선택 라이브러리 분석
  2. Spring 3.0 (36) Field Marker와 Field Default
  3. Maven의 default directory layout 변경하기
  4. DispatcherServlet의 디폴트 대체(fallback) 전략
  5. 미국여행을 위한 전자허가는 Spring을 이용해서
  6. 토비의 스프링 3이 나오기까지 (2)
  7. 토비의 스프링 3이 나오기까지 (7)
  8. 토비의 스프링 3이 나오기까지 (11)
  9. [토스3] 테스트를 위한 필드 주입 유틸
  10. Spring 3.0 (21) Web 모듈의 선택 라이브러리 분석
  11. Spring 3.0.2 모듈 의존관계
  12. Spring 3.0.1 mvc:annotation-driven 이 몰래 하는 짓
  13. InsideSpring (3) 스프링 밖에서 WebApplicationContext에 접근하기
  14. 블로그 업데이트, 스킨 교체, SNS(FB,TW,M2,BZ) 공유기능 추가
  15. 토비의 스프링 3이 나오기까지 (3)

Facebook comments:

to “[토스3] 스프링 3.0.4 <mvc:default-servlet-handler/>를 이용해서 UrlRewriteFilter없이 깔끔한 URL을 만들기”

  1. Looking forward to reading more. Great post.Really thank you! Much obliged.

  2. I have been exploring for a bit for any high-quality
    articles or weblog posts in this kind of house . Exploring in Yahoo I ultimately stumbled upon this site.
    Studying this info So i am happy to convey that I have a very just right uncanny feeling I discovered exactly what I needed.
    I such a lot no doubt will make sure to do not fail to
    remember this web site and give it a glance regularly.

  3. Very well-done blog. I especially appreciate content that has to do with health and fitness, so it’s refreshing to me to see what you have here. Keep it up! facial exercises

  4. Muchos Gracias for your blog.Really thank you!

  5. It as a funny thing about life ?henever you

  6. Thank you for your post.Really looking forward to read more. Really Great.

  7. First of all I would like to say great blog! I had a quick question in which I’d like to
    ask if you don’t mind. I was interested to find out how you center yourself and clear your mind
    prior to writing. I’ve had trouble clearing my mind in getting my thoughts out.
    I truly do take pleasure in writing however it just seems like the first 10 to 15 minutes
    are generally wasted simply just trying to figure
    out how to begin. Any suggestions or tips? Appreciate
    it!

    Here is my site :: Blue Hair Girl

  8. Thanks so much for the blog article. Keep writing.

  9. I am so grateful for your article. Really Great.

  10. Have you ever considered about adding a little bit more than just your
    articles? I mean, what you say is valuable and everything.
    However think of if you added some great
    pictures or videos to give your posts more, “pop”! Your content is excellent
    but with images and clips, this site could definitely be one
    of the most beneficial in its field. Excellent blog!

  11. I enjoy what you guys tend to be up too. Such clever work and
    reporting! Keep up the great works guys I’ve included you guys to our blogroll.

    my website http://daftargamesonline.com (King)

  12. Outstanding post however I was wanting to know if you could write a litte more on this topic?I’d be very grateful if you could elaborate a little bit more.Appreciate it!

  13. Currently it looks like Drupaal is the top blogging platform
    out there right now. (from what I’ve read) Is that whaat yoou are using on your blog?

  14. Howdy just wanted to give you a quick heads up and let you
    know a few of the pictures aren’t loading correctly. I’m
    not sure why but I think its a linking issue. I’ve tried it in two
    different internet browsers and both show the same outcome.

  15. Thanks for your personal marvelous posting! I definitely enjoyed
    reading it, you happen to be a great author.I will be sure to bookmark your blog and may come back
    in the foreseeable future. I want to encourage yourself to continue your great posts, have a nice morning!

  16. A motivating discussion is worth comment. I believe that you need to publish more about this subject, it might not be a taboo matter but usually people do not speak about such topics. To the next! All the best.

  17. A big thank you for your blog.Really looking forward to read more. Much obliged.

  18. I think this is a real great article. Want more.

  19. please take a look at the web pages we follow, such as this 1, because it represents our picks from the web

  20. I appreciate you sharing this article.Really looking forward to read more. Keep writing.

  21. Write more, thats all I have to say. Literally, it seems as
    though you relied on the video to make your point.
    You definitely know what youre talking about, why waste your intelligence on just posting videos to
    your weblog when you could be giving us something informative to read?

  22. Sites of interest we’ve a link to

  23. Howdy! Do you know if they make any plugins to assist with SEO?
    I’m trying to get my blog to rank for some targeted keywords but
    I’m not seeing very good success. If you know of any please share.
    Appreciate it!

  24. recruit [url=https://cialsagen.com/#]is viagra government funded[/url] safest place to buy viagra online buy viagra comfortable https://cialsagen.com/

  25. Every when inside a while we pick blogs that we study. Listed beneath are the latest internet sites that we decide on

  26. Sites of interest we’ve a link to

  27. usually posts some pretty interesting stuff like this. If you are new to this site

  28. Really informative blog post.Much thanks again. Keep writing.

  29. Unquestionably believe that which you stated. Your favorite
    justification seemed to be on the web the easiest thing to be aware of.

    I say to you, I definitely get annoyed while people consider worries that they just don’t know about.
    You managed to hit the nail upon the top and also defined out the
    whole thing without having side effect , people could
    take a signal. Will likely be back to get more. Thanks

  30. I value the blog.Much thanks again. Really Cool.

  31. Thanks for one’s marvelous posting! I certainly enjoyed reading it, you might be a great author.I will
    be sure to bookmark your blog and will often come back later in life.
    I want to encourage you to ultimately continue your great writing, have a nice weekend!

  32. Thank you for your blog post.Thanks Again. Awesome.

  33. Kamagra Vente Libre Europe http://cialisjh.com – п»їcialis Levitra Modalita D’Uso Cialis Sildenafil Generique 20 Mg

  34. Hello to all, how is everything, I think every one is getting more from this web site, and your views are fastidious for new viewers.|

  35. Hi! Do you use Twitter? I’d like to follow you if that would be ok.
    I’m definitely enjoying your blog and look forward to new posts.

    Here is my web-site poker online (triggerwiki.fervorcraft.De)

  36. Say, you got a nice post.Thanks Again. Much obliged.

  37. If you are going Gifts for Guys most excellent
    contents like I do, just visit this webb page everyday since it gives feature contents, thanks

  38. This is really interesting, You’re a very skilled blogger.
    I have joined your rss feed and look forward to seeking more of your fantastic post.
    Also, I have shared your website in my social networks!

  39. penis pump
    Then I’ll be the first to chip in. I’ve found trendy independent coffee houses with cool stuff like music and poetry readings an awesome place to meet more mature young
    people/college student. This is where I met my friend and current partner when I was in high school.
    Silicone toys can react with silicone lube, so be sure to use a water based lube
    or spot test your dildo before using a lube with silicone in it.
    I use Liquid Silk, which is water based but contains a small amount of
    silicone (dimethicone) in it. There was no reaction to speak of for
    me, but it is always a good idea to test for a reaction yourself, just to be sure..

    animal dildo Imagine my dismay when I developed a
    latex allergy. Condoms went from an exciting, if unnecessary, part of my sex
    life to dreaded backup birth control. I went from a wide variety of choices at the local drugstore
    to ONE boring type of non latex condom that was only sometimes available.

    Don’t simplify complex things to appeal to the lowest common denominator.
    A group of black activists can consist of women, queer people, disabled people, trans people, and countless other
    identities, for example. For instance, if you’re publicizing
    a Latinx history event (or any event), assume that attendees will want
    disability access and childcare information. animal
    dildo

    cock ring Or should I discuss it with her and tell her how sorry I am for the way I
    treated her. I’m caught in a bind please help. Thank you!PS: I’m sorry
    if this thread doesn’t belong here I wasn’t sure
    where to put it figured it was a problem with my soulPPS: Forgive the poor grammar English is my second language.
    The product works well for those just curious and into
    exploring light BDSM weather it is light spanking or being tied to a wall or a bed.

    Blind fold is a great thing because if gives you a bit of deprivation in not
    being able to see. Your anticipation is greater and you
    rely on your smell for lotions that may be used, or the sound of a toy that might
    be used on you.. cock ring

    animal dildo What is concerning me and has been for a bit,
    is, I used to bleed for 2 days, then after it was just spotting for the
    next 2 3 days. Now, it’s like, I don’t have a period, I have a period but it’s really nothing.

    To be honest, my last period I bleed less than 24/hrs (if I remember correctly I changed my tampon 3 4 times),
    it stopped completely for 24/hrs or more then spotted for a
    day and half. The Power Ring is made of TPR (thermoplastic
    rubber) which is a lower odor material. While it isn’t completely odorless like silicone or glass,
    it has only a slight plastic smell that is only noticeable when sniffed directly.
    While not tacky, the material does have quite a bit of drag, so it might be advisable to apply some
    lube to the ring or wearer when putting it on. animal dildo

    sex toys I don know about you, but the vast majority of men I see come here and ask
    questions about getting their girl off tend to be average
    sized, if not slightly above average. Though a lot of them admittedly do believe they too small,
    because of comments made by women they know in real life.
    (and porn, but to a much lesser extent than people here
    often assume)Seeing a model and then actually “feel” it in your
    vagina, having it attached to a guy is something completely different.
    And thanks to the culinary talents of my boy, he can make veggies somewhat.
    Edible! tonight’s dinner is rice, corn on the cob, chicken sausage and cauliflower.
    Possibly some foccacia bread with parmesan cheese.
    sex toys

    sex shop Clothes are a great way of expressing yourself.
    You can get duplicate bins or singles dependent on your own funds.
    If your child is a girl, you can opt for skirts and dresses.
    You know, the slender, moonshine skinned, pearl toothed stalkers of the night.
    They are sensual, magical, beautiful, and deadly. They,
    like aliens, are “Other,” steeped in mystery.
    So, I’d start by getting checked out, especially if this
    has been going on a long time. You may well have an infection that is way
    late or treatment, or something like a cyst that
    could be taken care of so you don’t have to have any soreness at all, which would obviously be a bonus.
    No one wants to have discomfort if they don’t
    have to, after all.. sex shop

    cock ring The Hub got off to a terrific start when it mounted “The Pavilion” as its inaugural offering, in 2009.
    This new version, directed by Kelsey Mesa, is not quite equal to the previous iteration, but it comes
    close. Sometimes making fine use of understatement, Murray (Hub’s outgoing
    artistic director) and Bassett create persuasive portraits of their troubled characters.
    I still really like my wand. Artistically it appeals to me because of the colors featured in the ball/handle area, but as far as functionality goes,
    I still like it. Not being able to use a vibrator easily with it is a slight negative,
    but I knew about that before so that isn’t an issue. cock ring

    adult stores near me I got told not to (I have mine pierced too) because the ointment
    blocks the air, which is needed for healing.

    It sounds like you are taking the necessary steps and being responsible.

    Unlike this girl at my school who’s being totally irrisponsible
    and will probably end up with blood posioning.
    In the past month I have developed something of a problem.
    I either don’t eat at all, or when I do eat, it’s something very
    small and I throw it up right after. I actually have no idea if this is an eating
    disorder or not. adult stores near me

    dog dildo But that’s just my two cents. I’m hungarian, and true to that wonderful Eastern European form,
    I’m very, very curvy. When I was a teenager, I popped diet pills, smoked,
    and crash dieted until I was weak, achy, and looked like
    hell. Alt: I do not recommend that you answer a person’s questions for
    a review that isn’t your own on their review (answering on the reviewer’s profile is
    good though if you’re concerned that they won’t be answered).
    It’s for the reviewer themself to learn what they missed and
    what is expected of them. Answering for the reviewer doesn’t really
    help them improve.. dog dildo

    adult store Kiiroo Onyx 2 is the most sophisticated connected masturbator available on the market.
    It has been designed to give you new sexual experiences, even when your partner is far away
    from you. It is equipped with a particularly quiet motor,
    which offers three stimulation modes including one manual
    and one automatic (Bluetooth). Never mind,
    for a minute, that what I see is often enough to
    make Buddha want to punch someone in the face. When you’re looking at the news
    through the mindset of “Yeah, but where’s the sex?” even politics can be entertaining.

    Flipping through the Kama Sutra recently, as we all do
    when waiting for a slow loading website (what, you don’t?),
    I was delighted to find that a lot of the names of
    the sexual positions had a slightly political ring to them..
    adult store

    g spot vibrator One thing I found was that nobody
    realised that I might have some different needs because of
    my deafness, Because I was also hearing. So, I’ve spent most of
    my life figuring it out for myself and discovering Way later
    that many of the things I experience aren’t peculiarities about how I interact with people, but regular features of deaf people’s experiences.
    It would’ve helped me so much more if somebody had clued me in earlier and
    I hadn’t had to figure Everything out for
    myself. Jelly just sticksSomeone asked me a question that I
    don really knowWhat dildo would you recommend for practicing to deep
    throat and why? I admit that I sucked on toys before,
    but never with that as a particular goal.
    Jelly just sticks and makes you gagMy wife and I have a considerable collection of toys that
    we both use but my personal favorite is our Jeff Stryker UR3
    dildo. My wife likes to strap it on and fuck me
    with it and I love the way it feels deep in my ass g spot vibrator.

  40. Really enjoyed this blog article. Will read on

  41. Really enjoyed this blog article.Much thanks again. Keep writing.

  42. Since the admin of this web page is working, no doubbt
    very rapidly it will be renowned, due to its feature contents.

  43. Hi there I am so glad I found your blog
    page, I really found you by mistake, while I was researching on Askjeeve
    for something else, Nonetheless I am here now and would just like to say kudos for a tremendous post and a all
    round interesting blog (I also love the theme/design), I don’t have time to look over
    it all at the moment but I have saved it and also included your RSS feeds, so when I have time I will be back
    to read a great deal more, Please do keep up the superb work.

  44. I really like what you guys are up too. This sort of clever work and coverage!
    Keep up the excellent works guys I’ve incorporated you guys to our blogroll.

  45. Very nice post. I simply stumbled upkn your weblog and wished to say that I’ve really loved browsing your weblog
    posts. After all I will be subscribing in your feed and I’m hopiing you write again soon!

  46. dildos
    The Bliss Egg Vibrator from California Exotics is a great toy for advanced users,
    and newbies. The variety of functions, waterproof, wireless remote, and charging
    station make this a very versatile toy and perfect for gift giving.
    The only problem (which doesn’t bother me, but I can see it being a problem
    for some) is the on/off switch on the egg is extremely small.
    But hating, my boy, is an art. It is not meant to and cannot substitute for advice or
    care provided by an in person medical professional.

    The information contained herein is not meant to be used to diagnose or treat a health problem or disease, or for prescribing
    any medication.

    vibrators My partner, who we’ll call Joe, was nervous
    as well. “I didn’t know what my test results would be; I’d only been tested previously for individual infections, so I was worried that I might not have been tested completely and might have been carrying something for years. I also hate needles, so knowing that they were going to be drawing blood was nerve wracking all on its own”..
    The Heartbreaker is made out of silicone, which is one of your safest materials to use.
    It only comes in pink, which is pretty average for the rechargeable toy
    line from Edenfantasys. The material is latex free, non porous and phthalates free, making it an excellent toy for anyone, especially for
    anyone with allergies.. vibrators

    male sex toys First, thank you for your time and all that you do.
    So my partner has been on depo provera for about a little over a
    year now and she has experienced weight gain and hair loss.
    Recently she has expressed to me how sad and unhappy
    she has been with the side effects and it saddens me
    that 9i cant do much for her.She has been contemplating on quitting depo and starting birth control pills, but
    i read a report where it has been found that quiiting depo and starting the
    pill or a hormonal method leads to more weight gain (link
    above). male sex toys

    sex shop Is it really okay to like pornography?
    No one can decide for you if it is okay for you to like pornography or not.
    Whether or not you like pornography and whether or not you decide to make pornography part of your sexual
    life is a decision that only you can really make.
    Some people are not comfortable with certain types of pornography.
    The remote is designed as a circular remote with a slight scoop near the power/control button and a hole through the center.
    The pink light runs along the length of the circular remote as well to ensure
    it’s easy to see from most angles. While the remote feels most comfortable to hold with a finger through the center hole,
    the scoop along the outside makes it easy to locate the power
    button without seeing the remote (such as when in a pocket) once you
    become familiar with the toy. sex shop

    vibrators Made to withstand extreme fetish play, this heavy duty
    harness features adjustable leg and waist straps and a stretchy silicone O ring.

    Go ahead, try to get this rugged strap on harness loose from
    your waist! The form fitting design comfortably
    hugs your body contours, allowing you to
    move freely and flexibly without any discomfort. With each use, the harness gets even softer
    and more fitting! The heavy duty metal belt buckle strap ensures it won come loose during the
    action, while the snaps hold the O ring in place and round out the system..

    vibrators

    male sex toys We understand that the price for each
    doll is extremely high for an online purchase, and we
    would like to make sure that our customers can trust us, and likewise we can trust
    our customers, during the entire trading process
    and any eventual post sales support. We will be glad to provide you with any information about our company and/or Orient Industry to make you feel safe during and after
    your purchase. We will also gladly support you after your purchase on behalf of and in cooperation with Orient Industry.
    male sex toys

    male sex toys Unlike so many other lubes, Hathor doesn’t try to “pretty it up” with artificial scents.
    I’m sorry, but the idea of strawberry scented (or flavoured!) lube just doesn’t do anything for
    me especially since my nether regions tend to try and hide when anything too doctored up gets anywhere close.
    This lube is glycerin and paraben free which is perfect for those of us with
    sensitivities to those particular chemicals. Kevin, the latest addition to the Riverdale gang, would be the first to tell you he’s got it
    pretty easy. Handsome, friendly and popular,
    Kevin’s an overachiever whose friends and family fully accept his sexuality; his military dad eagerly offers dating
    advice. But even into the bright, primary colored, well
    scrubbed fantasia that is Archie’s universe, conflict can and does arise: In this second collection of Kevin stories, our hero faces down a homophobic, name calling nemesis with the
    help of his friends. male sex toys

    fleshlight The message seemed to be that you have to get married if you’re in love, then stuff is all serious, you don’t get to be tomboyish and have to conform, a woman’s role is isolated to the home,
    she has no value in the outside world, where it is only a man who
    can be an agent of change or force for good, the whole family,
    including their happy experiences in the first half of the movie (which seemed to challenge him) is completely dependent on his
    power. There’s nothing mentioned about what was bad about
    the nazis other than that they threatened the family unit, and
    threatened the nationalistic self image of Austrians like
    Captain Von Trapp. The movie is flooded with dudes with guns.
    fleshlight

    dildos When she spins around for some rambunctious cowgirl, you will be pleasantly surprised to see what an incredible, firm round ass she has, as that huge black Johnson is drilled up into her.

    Catering to her husband’s fetish, she moves into doggie,
    with her arms on his leg, looking loving
    and lustfully into his eyes as he holds her hands supportively while she’s slammed from behind by
    Mike’s enormous black jack hammer, making her scream in ecstasy.
    How romantic! Unable to resist that beautiful round ass, he slips his king
    sized ramrod up her back alley for some anal excavation, which is so intense that it looks like her eyes
    are going to pop right out of her head. dildos

    animal dildo As a deodorant, this product performed well.
    It stayed on for the entire day and I still felt and smelled fresh after
    about 16 hours. I don’t require very strong deodorant and
    have never really had a problem with body odor, so I can not say if this is a very ‘heavy duty’ deodorant.
    The Powerlock Harness Set by Penthouse has only a few
    attachments and harnesses that are compatible, in comparison to the similarly
    designed Vac U Lock system which has tons. Both systems work equally well, but there are a few differences
    structurally: the Powerlock system uses a plug, like the Vac U
    Lock, but the dildo clips in rather than simply sliding on. This,
    as I hadn’t known before purchasing this set, also causes the dildo have a plastic insert in order to clip it
    onto the Powerlock plug, which is very hard and can be a bit bothersome when using it, as the plastic material can be felt through the dildo.
    animal dildo

    g spot vibrator Random searches to begin on Metro.
    Could be a little messy on Metro with WMATA to begin random bag inspections throughout the system.
    Metro officials say police will pull aside about every third passenger carrying a bag and search them with explosive screening equipment as well as bomb sniffing dog.
    Yes, the protection is great, as well as shorter periods.

    But the pain SUCKS. I am going back to condoms. In fact, if you look up “Reason for Erection” on the
    internet, besides getting some German band’s
    website, you’ll also find a lot of resources for
    unfortunate teenage boys plagued with erection problems: Erections during class.

    Erections at night. Erections for no reason at all g spot vibrator.

  47. Having read this I believed it was really informative. I appreciate you finding the time and energy to put this content together. I once again find myself personally spending a significant amount of time both reading and commenting. But so what, it was still worthwhile!

  48. With havin so much content do you ever run into any issues
    of plagorism or copyright violation? My site has a lot of completely unique
    content I’ve either created myself or outsourced but it appears a lot of
    it is popping it up all over the web without my permission. Do you know
    any techniques to help protect against content from being stolen? I’d really appreciate it.

  49. please visit the internet sites we stick to, including this a single, because it represents our picks through the web

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha