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";
}
}
?