【问题标题】:How to navigate between html & jsp pages in springspring如何在html和jsp页面之间导航
【发布时间】:2014-12-14 09:27:34
【问题描述】:

我在 WEB-INF 目录中有一个名为 kind.html 的 Html 页面,在 WEB-INF 文件夹中有另一个名为 registration.jsp 的 jsp 页面。我需要将此registration.jsp 页面放在WEB-INF 目录中,这样如果用户尝试通过键入其URL 来访问它,它就无法访问。所以我的问题是我如何从 kind.html 导航到 registration.jsp 链接称为 home 我是新手,谢谢。 下面是我的代码 sn-p 和 png 文件

种类.html.................................................. ..

<li class='active'><a href='kind.html'><span>Home</span></a></li>
<li class='has-sub'><a href="registration.jsp"><span>Register</span></a>


.............................registrationcontroller........................................
@RequestMapping(value="/registration",method = RequestMethod.POST)
    public @ResponseBody
    String firstRegistration(HttpServletRequest req,
            HttpServletResponse response) {
        response.setContentType("text/html");

        RegistrationModel registrationModel = new RegistrationModel();
        registrationModel.setFirstName(req.getParameter("first_name"));
        System.out.println("controller " + req.getParameter("first_name") );
        registrationModel.setLastName(req.getParameter("last_name"));
        registrationModel.setPassword(req.getParameter("password"));
        registrationModel.setEmailID(req.getParameter("email"));
        System.out.println("controller email " + req.getParameter("email"));
        SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");
        try {
            Date date = format.parse(req.getParameter("BirthDate"));
            registrationModel.setDOB(date);
        } catch (Exception e) {
            e.printStackTrace();
        }
        String phoneno=req.getParameter("phoneNo");
        Integer phoneNo = Integer.parseInt(phoneno);
        System.out.println("phone no ...."+phoneNo);
        registrationModel.setPhoneNo(phoneNo);
        registrationModel.setGender(req.getParameter("gender"));
        String age=req.getParameter("Age");
        Long AGE = Long.parseLong(age);
        registrationModel.setAge(AGE);
        registrationModel.setAvtar(req.getParameter("Avtar"));
        System.out.println("avtar"+ req.getParameter("Avtar"));

        Address address = new Address();
        address.setAddressline(req.getParameter("Full-Address"));
        address.setCity(req.getParameter("city"));
        address.setLandmark(req.getParameter("landmark"));
        address.setState(req.getParameter("state"));
        String zipCode =req.getParameter("Zipcode");
        Long zipcode = Long.parseLong(zipCode);
        address.setZipcode(zipcode);
        registrationModel.setAddress(address);

        registrationService.resgistration(registrationModel);

        return "registration.jsp";

    }

..........................registration.jsp.........................................................
<form action="registration" method="post">
                        <fieldset>
                            <legend>Register Form</legend>
                            <div>
                                <input type="text" name="first_name" placeholder="First Name" />
                            </div>
                            <div>
                                <input type="text" name="last_name" placeholder="Last Name" />
                            </div>
                            <div>
                                <input type="password" name="password" placeholder="Password" />
                            </div>
                            <div>
                                <input type="text" name="email" placeholder="Email" />
                            </div>
                            <div>
                                <input type="text" name="BirthDate" placeholder="BirthDate" />
                            </div>
                            <div>
                                <input type="number" name="Age" placeholder="Age" />
                            </div>
                            <div>
                                <select name="gender">
                                    <option value="select">i am..</option>
                                    <option value="m">Male</option>
                                    <option value="f">Female</option>
                                </select><br> <br>

                            </div>
                            <div>
                                <input type="number" name="phoneNo" placeholder="PhoneNo" />
                            </div>
                            <div>
                                <input type="text" name="Full-Address"
                                    placeholder="Full-Address" />
                            </div>
                            <div>
                                <input type="text" name="landmark" placeholder="landmark" />
                            </div>
                            <div>
                                <input type="text" name="city" placeholder="city" />
                            </div>
                            <div>
                                <input type="text" name="state" placeholder="state" />
                            </div>
                            <div>
                                <input type="number" name="Zipcode" placeholder="Zipcode" />
                            </div>
                            <div>
                                <input type="file" name="Avtar" placeholder="Avtar" />
                            </div>
                            <input type="submit" name="submit" value="Send" />
                        </fieldset>
                    </form>![folder structure of project][2]

【问题讨论】:

  • 点击href为“registration.jsp”的链接与在地址栏中输入registration.jsp的URL没有区别。因此,由于它在 WEB-INF 下,因此无法访问。这是一件好事,因为 JSP 是一个视图(MVC 中的 V)。所有请求都应该发送到控制器(MVC 中的 C)。所以你永远不应该有到 JSP 的链接。仅指向映射到控制器的 URL 的链接(在本例中为指向 /registration 的链接)。
  • 谢谢 JB Nizet 但我想从 kind.html 导航到 registration.jsp 所以我该怎么做或者这是可能的

标签: java html spring jsp spring-mvc


【解决方案1】:

第一个调用你的页面 html 是静态的,所以你可以使用 mvc 资源“”,对于 jsp,你必须使用 ViewResolver for jstl 在其配置中使用 InternalResourceViewResolver:

<bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
          <property name="prefix">
              <value>/WEB-INF/view/</value>
           </property>
          <property name="suffix">
             <value>.jsp</value>
          </property>
</bean>

然后在你的控制器中使用

return "registration";

您还需要方法来处理 GET 请求并更改以下行

<li class='has-sub'><a href="registration"><span>Register</span></a>

如果您使用的是 Spring boot,您会发现这些配置是自动化的。

【讨论】:

  • 我已经在spring配置文件中做了这个
  • OK 所以你没有指定后缀来调用它作为 return "registration.jsp";现在您还需要为 GET 请求添加其他方法。
  • 我想从 kind.html 导航到 registration.jsp 我该怎么做
  • 您将需要添加另一个具有相同路径但方法与 GET 相同的方法,它只会返回“registration.jsp”,然后您将在您的 href 中将此方法称为“/registration”,所以它将被称为获取请求,它将通过查看器解析器呈现 jsp 检查我之前在 Spring 3 上为 jstl youtube.com/watch?v=aGldP909l6o 所做的视频
  • bobo 我已经完成了@RequestMapping(value = "/registration", method = RequestMethod.GET) public @ResponseBody String kindRegistration(HttpServletRequest req, HttpServletResponse response) { response.setContentType("text/html" );返回“注册.jsp”; }
  • 注册
猜你喜欢
相关资源
最近更新 更多
热门标签