springmvc的简介:
SpringMVC是一款优秀的基于MVC思想的应用框架,它是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。
SpringMVC和Struts2的区别:
- springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过滤器。
- springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
- Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过request域传输到页面。Jsp视图解析器默认使用jstl。
springMVC框架的简单配置:
导包:由于没实现具体功能,因此只导入以下的jar包,如有需要,需另外导包
.wen.xml配置拦截器,和struts2配置相差不大
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--加载springMVC的核心配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.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核心文件的位置和名称,因此需要编写springmvc核心文件
核心配置文件里面包函约束、注解驱动、路径的前后缀,和spring 容器相差不大
<?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:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.zhong.spring.controller"></context:component-scan> <context:component-scan base-package="com.zhong.spring.service"></context:component-scan> <mvc:annotation-driven/> <!-- 配置路径的前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver" scope="singleton"> <!-- 前缀 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后缀 --> <property name="suffix" value=".jsp" /> </bean> </beans>
核心文件中需要配置注解文件的位置,因此编写Controller控制器,由于我实现的是,简单登陆,因此一个是跳转页面Controller 和登陆判断的Controller ,
package com.zhong.spring.controller;
import java.lang.annotation.Annotation;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.sun.javafx.sg.prism.NGShape.Mode;
@Controller
@RequestMapping("/hello")
public class Skip {
@RequestMapping(value="/login")
public String Login(){
return "login";
}
@RequestMapping(value="/register")
public String Register(){
return "register";
}
}
LoginController
package com.zhong.spring.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.zhong.spring.pojo.User;
import com.zhong.spring.service.Loginservice;
import com.zhong.spring.service.serviceImpl;
@Controller
@RequestMapping("/index")
public class LoginController {
private Loginservice loginservice;
@RequestMapping(value="/login")
public String Login(HttpSession session,Model model, User user){
System.out.println(user.toString());
if(loginservice.Login(user)){
session.setAttribute("user", user);
return "main";
}
else return "login";
}
//此功能未实现
@RequestMapping(value="/register")
public String Register(HttpSession session,Model model ,User user){
return "register";
}
public Loginservice getLoginservice() {
return loginservice;
}
@Resource(name="serviceImpl")
public void setLoginservice(Loginservice loginservice) {
this.loginservice = loginservice;
}
}
上面涉及一个简单的Service层,
service层,先编写一个接口然后,实现它
package com.zhong.spring.service;
import com.zhong.spring.pojo.User;
public interface Loginservice {
public boolean Login(User user);
public boolean Register(User user);
}
package com.zhong.spring.service;
import org.springframework.stereotype.Service;
import com.zhong.spring.pojo.User;
@Service("serviceImpl")
public class serviceImpl implements Loginservice{
@Override
public boolean Login(User user) {
System.out.println(user.toString());
if(user.getUname().equals("AYZXX")&&user.getUpassword().equals("AYZXX")){
return true;
}
return false;
}
@Override
public boolean Register(User user) {
return true;
}
}
以上就是Controller 和 Service 但是还缺一个简单的POJO类
package com.zhong.spring.pojo;
public class User {
@Override
public String toString() {
return "User [Uname=" + Uname + ", Upassword=" + Upassword + ", repass=" + repass + "]";
}
private String Uname;
private String Upassword;
private String repass;
set get 方法不写了
}
后面就是简单的JSP页面。
index.jsp
<body>
<a href="${pageContext.request.contextPath }/hello/login">登陆:</a>
<br></br>
<a href="${pageContext.request.contextPath }/hello/register">注册:</a>
</body>
login.jsp
<body>
<form action="${pageContext.request.contextPath }/index/login" method="post" name="login">
<table border="1" bordercolor="1" align="center">
<tr>
<td>姓名:</td>
<td><input class="textSize" type="text" name="Uname" value="${Uname} "/></td>
</tr>
<tr>
<td>密码:</td>
<td><input class="textSize" type="text" name="Upassword" value="${ Upassord}"/></td>
</tr>
<tr>
<td><input type="submit" value="登陆 " align="left"/></td>
</tr>
</table>
</form>
</body>
register.jsp main.jsp (功能未实现)
总体的目录结构:
实现的效果:
进入main.jsp页面。
总结:spring框架总体有大概的印象,执行流程了解一点。