接着昨天,今天又写了一个基于注解的spring mvc的例子,里面也存在很多的疑问,欢迎大家解答,非常感谢!不多说,直接上码了.
web.xml
<servlet>
<servlet-name>DispatcherServlet</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>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
applicationContext.xml
<!-- 让Spring启用对annotation的支持 -->
<context:annotation-config></context:annotation-config>
<!--<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="utf-8" />-->
<bean id="login" class="org.yonge.model.Login"></bean>
<!--<bean id="loginAction" class="org.yonge.action.LoginController"></bean>-->
<!-- 下面的配置可以读取hibernate.properties文件内容
<context:property-placeholder location="classpath:/hibernate.properties" />
-->
<!-- 为什么下面的定义都可以不需要? -->
<!-- 自动扫描org.yonge路径下的所有文件,并根据注解完成注入的工作 -->
<context:component-scan base-package="org.yonge"></context:component-scan>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property> <!-- 视图文件的前缀 -->
<property name="suffix" value=".jsp"></property> <!-- 视图文件的后缀名 -->
<!-- view是用什么显示,这里是jsp,还可以用velocity之类的 -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
</bean>
控制器
@Controller
//@Scope("prototype")
@RequestMapping("/loginAction.do")
public class LoginController {
@Resource(name="login") //根据名称注入
@Autowired //自动装配,如果没有,Login对象中的属性是不会注入
private Login login;
//不用下面的get/set方法也可以自动注入
public Login getLogin() {
return login;
}
public void setLogin(Login login) {
this.login = login;
}
// @RequestMapping() //注意:方法上必须要有此注解,
//否则会抛异常:javax.servlet.ServletException: No adapter for handler [org.yonge.action.LoginController@10202aa]:
//Does your handler implement a supported interface like Controller?
public String load(HttpServletRequest request, ModelMap modelMap, Login login)
{
// modelMap.put("userName", request.getParameter("userName"));
// modelMap.put("passWord", request.getParameter("passWord"));
System.out.println("userName:"+login.getUserName());
System.out.println("passWord:"+login.getPassWord());
modelMap.put("loginModel", login);
return "ok";
}
public String load(ModelMap modelMap)
{
return "ok";
}
@RequestMapping()
public String load(HttpServletRequest request, ModelMap modelMap)
{
// modelMap.put("userName", request.getParameter("userName"));
// modelMap.put("passWord", request.getParameter("passWord"));
System.out.println("Login Object:"+login.toString());
System.out.println("userName:"+login.getUserName());
System.out.println("passWord:"+login.getPassWord());
modelMap.put("loginModel", login);
return "ok";
}
// @RequestMapping() //如果用注解,此方法为什么不能运行 异常信息: argument type mismatch
//如果不用注解的形式,此方法是可以正常执行的
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
System.out.println("注解形式,执行4个参数方法");
Login login=(Login) command;
System.out.println("UserName:"+login.getUserName());
System.out.println("PassWord:"+login.getPassWord());
//第一种传值及显示
// request.setAttribute("userName", login.getUserName());
// request.setAttribute("passWord", login.getPassWord());
// return new ModelAndView("ok");
//第二种传值及显示
// return new ModelAndView("ok","loginModel",login);
//第三种传值及显示
Map mapModel=new HashMap();
mapModel.put("loginModel", login);
return new ModelAndView("ok",mapModel);
}
}
首页
<form action="./loginAction.do" method="get">
<table align="center" width="50%" border="0">
<tr>
<td>UserName:</td>
<td>
<input type="text" name="userName">
</td>
</tr>
<tr>
<td>PassWord:</td>
<td>
<input type="text" name="passWord">
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit"" value="提交">
</td>
</tr>
</table>
</form>
跳转页面
<body><!--
登录成功!!!
UserName:${userName }
PassWord:${passWord } -->
UserName:${loginModel.userName }
PassWord:${loginModel.passWord }
</body>
Model
public class Login {
private String userName;
private String passWord;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
疑问:
1、控制器中处理请求的方法,有哪些定义形式?
2、applicationContext.xml文件中至少需要定义些什么内容?什么时候需要定义上面所说的?
感受:
1、如果熟练,开发速度较快
2、太过灵活
分享到:
相关推荐
Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...
spring mvc spring4.x hibernate4.注解方式注入 简单的例子.spring mvc spring4.x hibernate4.注解方式注入 简单的例子.
IT学习者Spring MVC注解实例.pdf
Spring MVC 是一个基于 DispatcherServlet 的 MVC 框架,它是当前主流的 Web 框架之一。要想灵活运用 Spring MVC 来应对大多数的 Web 开发,就必须要掌握它的配置及原理。 一、Spring MVC 环境搭建 1. jar 包引入 ...
spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip03
基于注解的Spring_3.0.x_MVC,基于注解的Spring_3.0.x_MVC
使用 Spring 2.5 基于注解驱动的 Spring MVC.doc
学习Spring MVC,关于注解的Spring MVC,简单例子,关于控制器的Spring MVC,学习Spring,简单Spring MVC实例
spring3.0MVC注解(附实例).pdfspring3.0MVC注解(附实例).pdf
spring3.0MVC注解(附实例).docxspring3.0MVC注解(附实例).docx
Spring 2.5 基于注解驱动的 Spring MVC
Spring3_MVC注解教程.ppt
基于注解的Spring MVC的小例子,照着做就可以了
基于spring mvc注解开发的ajax项目实例,通过对注解@ResponseBody的应用,实现ajax局部刷新功能,java代码端返回Map,Integer,User,List等对象,在jsp页面通过$.each(data,function(index,entity) { });...
基于注解的spring_3.0.x_MVC学习笔记
演示了spring对aop的支持,包括注解方式、基于xml方式。
spring3.0MVC注解(附实例).
基于注解的spring MVC讲解。包括基础知识,配置,还有Controller不同的返回值分析。
Spring mvc注解.m4a