当前位置:编程学习 > JAVA >>

springMVC 页面跳转问题

大家好,我在做springMVC 代替了struts ,使用注解进行了action
的配置,并且把所有的jsp页面都放到了WEb-INF目录下,导致了无法直接访问jsp页面的问题。然后我的action类当多出来了很多没有用的action,如下:
    /**
     * 跳转到模块管理页面
     * spring转发到模块管理页面
     * @return
     * @see [类、类#方法、类#成员]    
     */
    @RequestMapping(value = "module/qryModuleList", method = RequestMethod.GET)
    public String qryModuleList()
    {
        return "module/module";
    }
就是去找module.jsp   但是这个方法好多余呀。  

请问 有没有更好的办法?请指教,小弟刚刚开始用springmvc新手。    spring jsp struts action --------------------编程问答-------------------- 我不明白你为什么把jsp放到WEb-INF目录下面
个人感觉放到WebRoot下面或者自己创建一些目录更合适一些。
spring突然感觉我自己学的也好差。以后也得重新开始学了。 --------------------编程问答-------------------- 公司要求的呀,说是问了更安全。 --------------------编程问答-------------------- 放到WEB-INF下的jsp,要跳转才行

你可以搞这个
    @RequestMapping(value = "{id}", method = RequestMethod.GET)
    public String getWelcomeView(@PathVariable String id,
            HttpServletRequest request)
    {
        request.setAttribute("selectpath", id);


        return  id;
    }

这样你要请求a页面, 就访问a.(你mvc的后缀),就会转到a.jsp,
这就是根据你路径来返回 --------------------编程问答--------------------

public class BaseContoller{
public static final String COMMON_FAIL_PAGE = "fail_page";
public static final String COMMON_FAIL_ALERT = "fail_message";
public static final String USER_SESSION_KEY = "user_session";

// 处理JSP页面的直接访问
@RequestMapping("/{jsp}.do")
public String jsp(@PathVariable(value = "jsp") String jspStr) {

return jspStr;
}

}

之后让所有的Contoller类继承他就能直接访问jsp了 --------------------编程问答--------------------
引用 4 楼 whz137458 的回复:
public class BaseContoller{     public static final String COMMON_FAIL_PAGE = "fail_page";     public static final String COMMON_FAIL_ALERT = "fail_message";……
也可以直接写在controller类里,你自己看着办吧,不过我个人认为还是继承的好 --------------------编程问答-------------------- 继承了以后tomcat 启动就报错了,
错误如下
严重: StandardWrapper.Throwable
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'moduleAction' bean method 
public java.lang.String net.huatech.framework.core.ActionFilter.jsp(java.lang.String)
to {[/{jsp}.htm],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}: There is already 'menuAction' bean method
public java.lang.String net.huatech.framework.core.ActionFilter.jsp(java.lang.String) mapped.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) --------------------编程问答-------------------- 因为我暂时有两个Action类,都继承了这个baseController。好像是实例化的时候重复了???怎么办? --------------------编程问答--------------------
引用 7 楼 jsj05514 的回复:
因为我暂时有两个Action类,都继承了这个baseController。好像是实例化的时候重复了???怎么办?
你注意一下规范,Action应该使用*.do,在web.xml加入

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
--------------------编程问答--------------------

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet>
<servlet-name>runInit</servlet-name>
<!-- 初始化 -->
<servlet-class>cn.com.newdt.travelitinerary.core.AutoInitServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>


<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<!-- 出错页面定义 -->
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error/500.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/error/403.jsp</location>
</error-page>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>




<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans   
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
           http://www.springframework.org/schema/context   
           http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-autowire="byName">


<!-- 事务  -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<!-- 数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="admin" />

<!-- 连接池启动时的初始值 -->
<property name="initialSize" value="1" />

<!-- 连接池的最大值 -->
<property name="maxActive" value="300" />

<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
<property name="maxIdle" value="2" />

<!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
<property name="minIdle" value="1" />
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>

<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<!-- 解决JOSN字符串乱码问题 -->
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- JSON对象注解 -->
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
</list>
</property>
</bean>

<!-- 自动扫描controller bean,把作了注解的类转换为bean -->
<context:component-scan base-package="cn.com.newdt.travelitinerary" />
<context:component-scan base-package="cn.com.newdt.rtms" />
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<!-- bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /-->

<!-- 拦截器,检验用户是否登陆等 -->
<bean id="authorizeInterceptor" class="cn.com.newdt.travelitinerary.core.AuthorizeInteceptor" />

<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="authorizeInterceptor" />
</list>
</property>
</bean>

<!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
<property name="order" value="0" />
</bean>

<!-- 总错误处理-->
<bean id="exceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="/error/error" />
<property name="defaultStatusCode" value="500" />
<property name="warnLogCategory"
value="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" />
</bean>

<!-- 国际化 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>i18n/messages</value>
</list>
</property>
<property name="useCodeAsDefaultMessage" value="true" />
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" /> 
<!-- 国际化 end-->


</beans>  
--------------------编程问答-------------------- 问题好像不是出现在这里吧?.do   .htm  只是个后缀吧?对这个错误没有直接影响吧!? --------------------编程问答-------------------- controller的话个人觉得还是不要继承自其他类好(不知都反射机制会不会帮你继承其他类),还有jsp不要调用dao层和service层哦,采用controller配视图的话可以起到隐藏你的真实的页面url的目的,而且jsp不会被直接访问到,这是很重要的。如果你是想省略掉这个只有一行代码的方法记忆中spring mvc好像是有这样的xml配置的,你可以搜一下,我现在没有开发环境,不能帮你试。如果你不用传参数的话可以写成一个静态的html页面,然后在*-servlet.xml配上形如<mvc:resources location="/img/" mapping="/img/**" />,那么webcontent根目录下的img文件夹就会被视为静态资源可以直接访问了,具体可以参考一下我的博客http://blog.csdn.net/qgmzzn1/article/details/8465969 --------------------编程问答-------------------- <!-- ================== Spring View Resolver Definition ================================= -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,