编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

spring快速入门例子教程:06展现层

Spring的业务层Spring的持久层都已经开始完成了,该是为程序提供界面的时候了。Struts2框架由于抢尽天时地利,成为当下最流行的展现层框架。但Spring MVC相对于Struts2更加简单、强大、优雅。此外,由于Spring MVC框架出自Spring之手,因此和Spring容器没有任何的阻抗,显得天衣无缝。

配置Spring MVC框架

首先对web.xml文件进行配置,以便web容器启动时能够自动启动Spring容器,web.xml文件的核心代码如下:

<!-- 从类路径下加载Spring配置文件,classpath关键字特指类路径下加载 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

<!-- 负责启动Spring容器的监听器,他将引用contextConfigLocation上下文参数获得Spring配置文件地址 -->

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<!-- Spring MVC的主控Servlet -->

<servlet>

<servlet-name>bbs</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<load-on-startup>3</load-on-startup>

</servlet>

<!-- Spring MVC处理的 -->

<servlet-mapping>

<servlet-name>bbs</servlet-name>

<url-pattern>*.html</url-pattern>

</servlet-mapping>

处理登录请求

在com.bbs.web包下新建类:LoginCommand,代码如下

package com.baobaotao.web;

public class LoginCommand {
	private String userName;
	private String password;

	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
}

在同样的包下新建类:LoginController,代码如下

package com.bbs.web;

import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.bbs.domain.User;
import com.bbs.service.UserService;

@Controller
public class LoginController{
	
	@Autowired
	private UserService userService;
    
	@RequestMapping(value = "/index.html")
	public String loginPage(){
		return "login";
	}
	
	@RequestMapping(value = "/loginCheck.html")
	public ModelAndView loginCheck(HttpServletRequest request,LoginCommand loginCommand){
		boolean isValidUser = userService.hasMatchUser(loginCommand.getUserName(),loginCommand.getPassword(),2);
		if (!isValidUser) {
			return new ModelAndView("login", "error", "用户名或密码错误",2);
		} else {
			User user = userService.findUserByUserName(loginCommand.getUserName(),2);
			user.setLastIp(request.getLocalAddr(),2);
			user.setLastVisit(new Date(),2);
			userService.loginSuccess(user,2);
			request.getSession().setAttribute("user", user,2);
			return new ModelAndView("main",2);
		}
	}
}

在Spring的配置文件applicationContext.xml中指定视图解析器

<bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver"

p:viewClass="org.springframework.web.servlet.view.JstlView" 

p:prefix="/WEB-INF/jsp/"

p:suffix=".jsp" />

登录页面login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
	<head>
		<title>宝宝淘论坛登录</title>
	</head>
	<body>
		<c:if test="${!empty error}">
	        <font color="red"><c:out value="${error}" /></font>
		</c:if>        
		<form action="<c:url value="loginCheck.html"/>" method="post">
			用户名:
			<input type="text" name="userName">
			<br>
			密 码:
			<input type="password" name="password">
			<br>
			<input type="submit" value="登录" />
			<input type="reset" value="重置" />
		</form>
	</body>
</html>

欢迎界面main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>宝宝淘论坛</title>
</head>
<body>
    ${user.userName},欢迎您进入论坛,您当前积分为${user.credits};
</body>
</html>


未经允许不得转载: 技术文章 » Java编程 » spring快速入门例子教程:06展现层