検索

ホームページ  >  に質問  >  本文

java - springmvc不能扫描到Controller,报404?

applicationContext.xml
 <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util"  
        xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
            http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
            http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd" >
    <!-- 定义支持注解的HanlderMapping -->
        <mvc:annotation-driven/>
        <!-- 开启组件扫描,启用IOC注解配置 -->
        <context:component-scan 
            base-package="com.caibai"/>
            
        <util:properties id="dbParams" 
            location="classpath:db.properties">
        </util:properties>
        
        <bean id="viewResolver" 
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/">
            </property>
            <property name="suffix" value=".jsp">
            </property>
        </bean>
        
    </beans>

web.xml

<?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">
 
 <servlet>
     <servlet-name>springmvc</servlet-name>
     <servlet-class>
 org.springframework.web.servlet.DispatcherServlet
     </servlet-class>
     <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:applicationContext.xml</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
     <url-pattern>*.form</url-pattern>
 </servlet-mapping>
 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

LoginController.java

package com.caibai.controller;

import javax.annotation.Resource;
//import javax.ejb.Remove;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.caibai.search.User;
import com.caibai.search.UserService;

@Controller
public class LoginController {
    @Resource
    private UserService service;
    
    
    @RequestMapping("/tologin.form")
    public String toLogin(){
        return "login";
    }
    @RequestMapping("/login.form")
    public String login(
        String username,String number,Model model){
        User user = service.checkLogin(username,number);
        if(!"".equals(user.getCard())){
            model.addAttribute("name", user.getName());    
            model.addAttribute("card", user.getCard());    
            model.addAttribute("number", user.getNumber());    
            model.addAttribute("score", user.getScore());    
            return "ok";
        }else {
            model.addAttribute("msg", "会员信息错误!");
            return "login";
        }

    }
}

代码如上,页面访问login.jsp静态页面是可以的,但是填写上登陆数据不能跳转,直接访问login.form也是报404错误,请各位大神看下是什么原因?

阿神阿神2890日前229

全員に返信(9)返信します

  • 怪我咯

    怪我咯2017-04-17 17:47:41

    核心を見つけてください

    あなたの説明をもう一度読みましたが、你可以直接访问.jsp页面 と書いてありました! ! !
    その場合、JSP はルート パス の直下に 配置する必要があります。 その場合、prefix パラメータまたは value="/"

    を設定しないでください。

    ビューが WEB-INF の下に配置される理由は、ユーザーがコントローラーを経由せずにビューに直接アクセスできないようにするためです 。これにより、ページ上のモデル データが存在しなくなります 。そこにも置くことをお勧めします。
    ————————————————————————————————

    設定に問題はないようですが、.form メソッドにブレークポイントを設定することをお勧めします。

    これで、マッピングは成功したように見えますが、返されたビューが見つかりません
    /WEB-INF/ok.jsp/WEB-INF/login.jspが存在するか確認してください。

    さらに、私が通常見るビューは、/WEB-INF/ の下に直接スローされるのではなく、すべて /WEB-INF/views または /WEB-INF/jsps ディレクトリーの下にあります。
    このように配置されているかどうかを確認してください。そうであれば、設定ファイルの記述が間違っています

    リーリー

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:47:41

    404 には通常 2 つの理由があります。1 つは、RequestMapping が正しく記述されていない、または構成が正しいはずであるが、もう 1 つは、ok.html ログインを返した 2 つのテンプレートを確認してください。 html または ok.jsp ok.html は存在しますか?
    さらに、404 ページにその理由を示すプロンプトが表示されます。

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 17:47:41

    @Controller下に @RequestMapping("/XXX") はありません

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:47:41

    リーリー

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:47:41

    @ruixie の方が正しいです。
    追記: 追加するには、コントローラーによって呼び出されるメソッドにブレークポイントを設定して、呼び出す必要があるメソッドにリクエストが入っているかどうかを確認できます。

    • 入っていない場合は、通常、構成マッピングのエラーです。

    • メソッドを入力すると、返された「ログイン」がビュー パーサーによって解析されていないことが証明されます。

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 17:47:41

    構成ファイルから判断すると、URL が見つからないことを示す 404 エラーが報告されているため、最初にコントローラー層に入ることができるはずです。問題はあなたの全体と組み合わせる必要があります。プロジェクトから判断すると、まず試してから、[堕天使 008] の答えに基づいて問題を確認することができます

    返事
    0
  • PHPz

    PHPz2017-04-17 17:47:41

    jsp ディレクトリが間違っているはずです。jsp ファイルが見つかりませんでした。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:47:41

    最初に JUnit を使用してテストできます

    返事
    0
  • 黄舟

    黄舟2017-04-17 17:47:41

    404 Not Found: 要求されたリソースが見つかりませんでした (要求されたリソースが見つかりません)

    LoginController @Controller または @ResponseBody を併用せずに @RestController のみを使用し、View リクエストのリダイレクトの使用を示します。 「/tologin.form」と「/login.form」が正常にマッピングされ監視されているかどうかは、次のようなアプリケーション起動ログで確認できます:

    リーリー

    設定した springmvc サーブレット マッピングは *.form のみをリッスンし、*.jsp によってリダイレクトされたリクエストはリッスンしません。これらのリクエストは、Tomcat conf/web.xml で設定された default サーブレットに送られます。 jspファイルはどこに置かれますか?
    次のように変更してみてください:

    リーリー

    返事
    0
  • キャンセル返事