SpringMVC 入门1 搭建MVC 注解 扫描 表单

2018年1月25日17:17:38

第一段课内容 MVC搭建

第一步 新建web项目6.0名字随便取

第二步 先导入包粘贴添加依赖

第三步 新建com.bdqn.ctr包里新建控制TextController类 实现Controller接口 重写方法
 改一下参数名称 然后new返回对象 给对象添加键值对这可以不一定 setViewName是去哪个JSP页面 返回对象

  //先改参数名称
  ModelAndView MAV=new ModelAndView();
  //键值对
  MAV.addObject("msg", "haha");
  //逻辑名 跟真正的JSP页面名一样 不要前缀后缀
  MAV.setViewName("MyJsp");
  return MAV;

第四步 WebRoot/WEB-INF里新建Folder目录叫jsp,然后在里面新建jsp文件名字就叫MyJsp吧$符号大括号中间是键名称就可以得出值
        ${msg}


第五步 配置WebRoot/WEB-INF里的web.xml文件 配置servlet标签 注意名称可能有些bug
  <servlet>
   <!-- 必须和springmvc-servlet.xml的前段springmvc一模一样的名字 -->
   <servlet-name>springmvc</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   
   <init-param>
    <param-name>contextConfig/Location</param-name>
    <param-value>classpath:springmvc-servlet.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
   <servlet-name>springmvc</servlet-name>
 <!--不要过滤/*-->
   <url-pattern>/</url-pattern>
  </servlet-mapping>
 
</web-app>

第六步 配置WebRoot/WEB-INF里的springmvc-servlet.xml 配置bean

 <!-- name里是用于网址拼接的index.xml段  calss是继承或实现的那个类包名.类名-->
 <bean name="/index.html" class="com.bdqn.ctr.TextController"/>

 <!-- 完成视图的对应 -->
 <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
  <!--WebRoot是web项目的根目录/WEB-INF/jsp/前缀MyJsp后缀.jsp-->
  <property name="prefix" value="/WEB-INF/jsp/"/>
  <property name="suffix" value=".jsp"/>
 </bean>

第七步 MyJsp.jsp页面直接用EL表达式${键名}就可以拿到值

第八步 发布项目到Tomcat服务器 出现主页后再url后面拼接WebRoot/WEB-INF里的springmvc-servlet.xml里的name那一段index.html
 就可以跳转到对应JSP页面了 并显示出键里的值

 

 

 

 

 

第二段课内容 注解 扫描

WebRoot/WEB-INF里的springmvc-servlet.xml里的一个bean注释掉 以后扫描出来

        <!-- name里是用于网址拼接的index.xml段  calss是继承或实现的那个类包名.类名-->
 <!-- <bean name="/index.html" class="com.bdqn.ctr.TextController"/> -->

添加两行 <!--扫描控制类所在包-->
        <context:component-scan base-package="com.bdqn.ctr"/> 
     <mvc:annotation-driven/>


然后控制类TextController
类名上面加上@Controller因为已经实现了Controller接口导入了包 所以可能会变成@org.springframework.stereotype.Controller这一行
类下面方法上面@RequestMapping("indd") 这里的indd是用于拼接网址的

 

 

 

第三段课内容

主页添加一个form表单
 <form action="ucon/log" method="post">
      昵称:<input type="text" name="lname"></br>
      密码:<input type="password" name="lpwd"></br>
      <input type="submit" value="确定">
     </form>
控制类UsController.java
类名上面 因为Controller已经实现了接口所以会变成一行的
@org.springframework.stereotype.Controller
@RequestMapping("ucon") //ucon是用于地址拼接的

方法上面
@RequestMapping("/log") //注意/log是用于网址拼接的

根据form表单的input标签name获得String类型的值
  ModelAndView MAV=new ModelAndView();
  String rname=request.getParameter("lname");
  String rpwd=request.getParameter("lpwd");
  if(rname.equals("admin")&&rpwd.equals("888")){
   User u=new User();
   u.setuName(rname);
   u.setuPwd(rpwd);
   MAV.addObject("hu", u);
   MAV.setViewName("MyJsp");
  }
  return MAV;

JSP页面 WebRoot/WEB-INF/jsp/MyJsp.jsp里可以输出登录的名字和密码
        </br>
        欢迎:${hu.uName}
        </br>
        密码是:${hu.uPwd}

 

 

 

 

 

第四段课内容 不继承不实现 拿到登录表单的值在控制台输出
新建一个控制类UuController.java
package com.bdqn.ctr;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.Controller;
@org.springframework.stereotype.Controller
@RequestMapping("gaga")
public class UuController{
 @RequestMapping("/gg")
 public String getCanShu(@RequestParam String lname,@RequestParam String lpwd){
  System.out.println(lname+"\t"+lpwd);
  return "MyJsp";
 }
}

 


下面是项目代码

第一 web.xml

  <servlet>
   <!-- 必须和springmvc-servlet.xml的前端springmvc一模一样的名字 -->
   <servlet-name>springmvc</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   
   <init-param>
    <param-name>contextConfig/Location</param-name>
    <param-value>classpath:springmvc-servlet.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
   <servlet-name>springmvc</servlet-name>
   <url-pattern>/</url-pattern>
  </servlet-mapping>

第二 springmvc-servlet.xml

        <context:component-scan base-package="com.bdqn.ctr"/> 
     <mvc:annotation-driven/>
       
       
        <!-- name里是用于网址拼接的index.xml段  calss是继承或实现的那个类包名.类名-->
  <!-- <bean name="/index.html" class="com.bdqn.ctr.TextController"/> -->

 <!-- 完成视图的对应 -->
 <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
  <property name="prefix" value="/WEB-INF/jsp/"/>
  <property name="suffix" value=".jsp"/>
 </bean>
第三 TextController
package com.bdqn.ctr;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import com.bdqn.entity.User;

 


//import com.bdqn.entity.User;
@org.springframework.stereotype.Controller
public class TextController implements Controller{
 //集成 类 或实现 Controller接口
 
 @Override
 @RequestMapping("indd")
 public ModelAndView handleRequest(HttpServletRequest arg0,
   HttpServletResponse arg1) throws Exception {
  // TODO Auto-generated method stub
  //先改参数名称
  ModelAndView MAV=new ModelAndView();
  
  User u=new User(11, "用户", "999");
  MAV.addObject("yonghu", u);
  MAV.addObject("msg", "haha");
  //到哪个视图页面
  MAV.setViewName("MyJsp");
  return MAV;
 }//extends AbstractController{

 

 //@Override
 

 
 //XML加上 两句 控制层加上注解控制@Controller 加上注解请求@RequestMapping("indd")
 
}

第四 UsController
package com.bdqn.ctr;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import com.bdqn.entity.User;
@org.springframework.stereotype.Controller
@RequestMapping("ucon")
public class UsController implements Controller{

 //先@Controller可能出现一大行没问题然后@RequestMapping("ucon")用与拼接URL再然后@RequestMapping("/log")
 
 //如果没跳进来报错springmvc结尾 URL错 就是忘记了@org.springframework.stereotype.Controller
 @Override
 @RequestMapping("/log")
 public ModelAndView handleRequest(HttpServletRequest request,
   HttpServletResponse response) throws Exception {
  // TODO Auto-generated method stub
  //先改参数名词
  ModelAndView MAV=new ModelAndView();
  String rname=request.getParameter("lname");
  String rpwd=request.getParameter("lpwd");
  if(rname.equals("admin")&&rpwd.equals("888")){
   User u=new User();
   u.setuName(rname);
   u.setuPwd(rpwd);
   MAV.addObject("hu", u);
   MAV.setViewName("MyJsp");
   System.out.println("走了");
  }
  return MAV;
 }

}

第五 UuController
package com.bdqn.ctr;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.Controller;
@org.springframework.stereotype.Controller
@RequestMapping("gaga")
public class UuController{
 @RequestMapping("/gg")
 public String getCanShu(@RequestParam String lname,@RequestParam String lpwd){
  System.out.println(lname+"\t"+lpwd);
  return "MyJsp";
 }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值