需要用于重定向或包含在Spring MVC控制器中的解决方案

时间:2018-08-23 07:08:21

标签: java spring eclipse spring-mvc jsp

我有一个jsp索引文件,其中有一个简单的登录表单,我检查了用户在控制器上显示的值,并将它们重定向到具有其他功能的受人尊敬的jsp页面。

这是我的索引文件:

<html>
</head> <body>  <b><span class="heading">LOGIN USER</span></b>  <div class="container">
        <form action="login.html" method="Post">
            <div class="form_style">
            <input type="text" name="username" placeholder="Enter Username"/>
            <input type="password" name="pwd" placeholder="Enter password"/>
            <select name="dept">
                <option>IT</option>
                <option>Admin</option>
                <option>HR</option>
                <option>Marketing</option>
            </select>
            <input type="Submit" value="submit">

            </div>
        </form>
    </div> </body>

</html>

控制器:

public class LoginController {  
    @RequestMapping("/login")  
    public ModelAndView loginResult(HttpServletRequest req,HttpServletResponse res) {
        InfoEmployee inf = new InfoEmployee();
        InfoManager inf2 = new InfoManager();
        String uname=req.getParameter("username");  
        //Putting the username in the session object


        String pwd=req.getParameter("pwd");  
        String dept = req.getParameter("dept");
        String name1 = inf.getName();
        String message1 = "Welcome "+name1;  
        String name2 = inf2.getName();
        String message2 = "Welcome "+name2;
        if(uname.equals(inf.getUsername())&&pwd.equals(inf.getPassword())&&dept.equals(inf.getDept()))
        {
            req.getSession().setAttribute("uname",inf.getName());
            return new ModelAndView("employeeLoginResult", "message", message1); 

        }
        else if(uname.equals(inf2.getUsername())&&pwd.equals(inf2.getPassword())&&dept.equals(inf2.getDept()))
        {
            req.getSession().setAttribute("uname",inf2.getName());
            return new ModelAndView("adminLoginResult", "message", message2); 
        }

        else
        {
            return new ModelAndView("RedirectTondex", "message","Sorry, username or password error");  
        }
    }  

现在,我已经在Java类中将登录值硬编码为InfoManager和InfoEmployee。我将jsp映射到控制器中的其他jsp。

我的问题是,如果在控制器else语句中没有匹配项,我想重定向或包含到索引文件中。

如果我在这里给出索引的引用,它只会搜索WEB-INF / jsp目录,就像我在servlet调度程序类中这样编码一样

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

所以我想到了两种解决方案 1是我可以做一个jsp向用户展示一些错误的东西,并在可能的情况下将其从那里重定向到索引。 2直接从控制器重定向到索引,并使用如上所述的ModelAndView类型方法将消息传递到索引。

感谢您对问题的任何帮助或建议。 预先谢谢你。

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式实现它。一种是返回:

return new RedirectView("redirectedUrl");

或者您可以使用

return new ModelAndView("redirect:/abc.htm")

或者将索引文件移动到web-inf / jsp中,并使其成为JSP,然后像这样重定向:

return new ModelAndView("index")