您的位置:首页 > 编程语言 > Java开发

基于SpringMVC框架,完成用户的增,删,改,查,以及json数据处理

2015-12-07 14:39 621 查看
源码下载地址:http://download.csdn.net/detail/mexican_jacky/9333525

本文是自己在学习SpringMVC做一个简单记录,方便以后自己忘记回来查询。

第一步:配置DispatcherServlet以及字符编码处理

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!--

在web.xml中配置DispatcherServlet 此处就相当于Struts2的拦截器一样

-->

<servlet>

<servlet-name>springMVC</servlet-name>

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

<!-- 加载的时候就启动 -->

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>springMVC</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

<!-- 中文乱码处理 -->

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

</web-app>

第二步:新建SpringMVC控制器,注明:在新建SpringMVC控制器的文件名必须与web.xml中DispatcherServlet中的servletName一致



SpringMVC-servlet中的配置文件信息如下:

<?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-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

<!-- 注解的方式 -->

<!-- Controller基于那个包 -->

<context:component-scan base-package="org.ksea.controller"/>

<mvc:annotation-driven/>

<!-- 将静态文件指定到某个特殊的文件夹中统一处理 /resources/**表示 resources文件夹中所有文件 -->

<mvc:resources location="/resources/" mapping="/resources/**"/>

<!-- 全局异常处理 -->

<bean id="exceptionResolver"

class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">

<property name="exceptionMappings">

<props>

<!-- prop中 key是您定义的异常类作为key,value是您要跳转异常处理的页面 这里就是 error.jsp -->

<prop key="org.ksea.exception.UserExcetion" >user/error</prop>

</props>

</property>

</bean>

<!-- 文件上传配置 设置CommonsMultipartResolver才能完成上传-->

<bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<!-- 限制文件大小为5M -->

<property name="maxUploadSize" value="5000000"></property>

</bean>

<!-- 映射视图 -->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<!-- 视图前缀 -->

<property name="prefix" value="/WEB-INF/pages/"/>

<!-- 视图后缀 -->

<property name="suffix" value=".jsp"/>

</bean>

</beans>

-----------------------以上为SpringMVC框架的一个简单配置---------------------------------------------

以下实例采用原生态JBDC进行测试:

package org.ksea.db;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.text.html.HTMLDocument.HTMLReader.PreAction;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

public class DatabaseUtil {

private static final String USER_NAME = "root";

private static final String USER_PASSWORD = "root";

private static final String DRIVER = "com.mysql.jdbc.Driver";

private static MysqlDataSource dataSource;

static {

dataSource = new MysqlDataSource();

dataSource.setDatabaseName("ksea");

dataSource.setPort(3306);

dataSource.setUser(USER_NAME);

dataSource.setPassword(USER_PASSWORD);

}

public static Connection getConnection() throws SQLException {

return dataSource.getConnection();

}

public static void executeUpdate(String sql, Object... params) {

try {

Connection con = getConnection();

PreparedStatement statement = con.prepareStatement(sql);

if (null != params && params.length > 0) {

for (int i = 0; i < params.length; i++) {

statement.setObject(i + 1, params[i]);

}

}

statement.executeUpdate();

closeResource(null, statement, con);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static ResultSet executeQuery(String sql, Object... params) {

try {

Connection con = getConnection();

PreparedStatement statement = con.prepareStatement(sql);

if (null != params && params.length > 0) {

for (int i = 0; i < params.length; i++) {

statement.setObject(i + 1, params[i]);

}

}

return
statement.executeQuery();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

// 关闭连接,此方法主要针对增,删,改的关闭

private static void closeResource(ResultSet resultSet, Statement statement,

Connection connection) {

try {

if (null != resultSet) {

resultSet.close();

}

if (null != statement) {

statement.close();

}

if (null != connection) {

connection.close();

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 针对查询写的关闭

public static void closeResource(ResultSet resultSet) {

try {

Statement statement = resultSet.getStatement();

Connection connection = statement.getConnection();

if (null != resultSet) {

resultSet.close();

}

if (null != statement) {

statement.close();

}

if (null != connection) {

connection.close();

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

--------------------------------------------DAO封装------------------------------------------------

package org.ksea.dao;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import org.ksea.db.DatabaseUtil;

import org.ksea.model.User;

public class UserDao {

private static final String USERLIST = "select * from user";

private static final String QUERYUSERBYUSERNAME = "select * from user u where u.username=?";

private static final String QUERYUSERBYUID = "select * from user u where u.uid=?";

public List<User> queryUserList() {

ResultSet resultSet = DatabaseUtil.executeQuery(USERLIST, null);

List<User> users = new ArrayList<User>();

try {

while (resultSet.next()) {

users.add(new User(

String.valueOf(resultSet.getObject("uid")),

String.valueOf(resultSet.getObject("username")),

String.valueOf(resultSet.getObject("pwd")),

String.valueOf(resultSet.getObject("nickname")),

String.valueOf(resultSet.getObject("email")),

String.valueOf(resultSet.getObject("filename"))

));

}

DatabaseUtil.closeResource(resultSet);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return users;

}

public User queryUserByUserName(String userName){

ResultSet resultSet=DatabaseUtil.executeQuery(QUERYUSERBYUSERNAME, userName);

User u=null;

try {

while (resultSet.next()) {

u=new User(

String.valueOf(resultSet.getObject("uid")),

String.valueOf(resultSet.getObject("username")),

String.valueOf(resultSet.getObject("pwd")),

String.valueOf(resultSet.getObject("nickname")),

String.valueOf(resultSet.getObject("email")));

}

DatabaseUtil.closeResource(resultSet);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return u;

}

public User queryUserByUid(String uid){

ResultSet resultSet=DatabaseUtil.executeQuery(QUERYUSERBYUID, uid);

User u=null;

try {

while (resultSet.next()) {

u=new User(

String.valueOf(resultSet.getObject("uid")),

String.valueOf(resultSet.getObject("username")),

String.valueOf(resultSet.getObject("pwd")),

String.valueOf(resultSet.getObject("nickname")),

String.valueOf(resultSet.getObject("email")));

}

DatabaseUtil.closeResource(resultSet);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return u;

}

public User login(User user){

ResultSet resultSet=DatabaseUtil.executeQuery(

"select * from user u where u.username=? and u.pwd=?",

new Object[]{user.getUsername(),user.getPwd()});

User u=null;

try {

while (resultSet.next()) {

u=new User(

String.valueOf(resultSet.getObject("uid")),

String.valueOf(resultSet.getObject("username")),

String.valueOf(resultSet.getObject("pwd")),

String.valueOf(resultSet.getObject("nickname")),

String.valueOf(resultSet.getObject("email")));

}

DatabaseUtil.closeResource(resultSet);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return u;

}

public void updateUser(User user){

DatabaseUtil.executeUpdate(

"update user set username=?,pwd=?,email=?,nickname=? where uid=?",

new Object[]{

user.getUsername(),

user.getPwd(),

user.getEmail(),

user.getNickname(),

user.getUid()

});

}

public void addUser(User user){

DatabaseUtil.executeUpdate(

"insert into user(username,pwd,email,nickname,filename) values(?,?,?,?,?)",

new Object[]{

user.getUsername(),

user.getPwd(),

user.getEmail(),

user.getNickname(),

user.getFilename()

});

}

public void deleteUser(String uid){

DatabaseUtil.executeUpdate("delete from user where uid=?", uid);

}

}

------------------------------------------------用户信息类User-------------------------------------------------

package org.ksea.model;

import javax.validation.constraints.NotNull;

import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.Email;

import org.hibernate.validator.constraints.NotEmpty;

public class User {

private String uid;

private String username;

private String pwd;

private String nickname;

private String email;

private String filename;

public User() {

// TODO Auto-generated constructor stub

}

public User(String uid, String username, String pwd, String nickname,

String email) {

super();

this.uid = uid;

this.username = username;

this.pwd = pwd;

this.nickname = nickname;

this.email = email;

}

public User(String uid, String username, String pwd, String nickname,

String email, String filename) {

super();

this.uid = uid;

this.username = username;

this.pwd = pwd;

this.nickname = nickname;

this.email = email;

this.filename = filename;

}

public String getUid() {

return uid;

}

public void setUid(String uid) {

this.uid = uid;

}

@NotEmpty(message = "用户名不允许为空!")

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

@Size(min = 6, max = 20, message = "密码长度介于6-20个字符!")

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

public String getNickname() {

return nickname;

}

public void setNickname(String nickname) {

this.nickname = nickname;

}

@Email(message = "邮箱格式不正确!")

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getFilename() {

return filename;

}

public void setFilename(String filename) {

this.filename = filename;

}

}

-------------------------------------------自定义异常处理---------------------------------------------------

package org.ksea.exception;

public class UserExcetion extends Exception {

private static final long serialVersionUID = 1251860651597558808L;

public UserExcetion() {

super();

// TODO Auto-generated constructor stub

}

public UserExcetion(String message, Throwable cause) {

super(message, cause);

// TODO Auto-generated constructor stub

}

public UserExcetion(String message) {

super(message);

// TODO Auto-generated constructor stub

}

public UserExcetion(Throwable cause) {

super(cause);

// TODO Auto-generated constructor stub

}

}

-----------------------------------------------SpringMVC核心 Controller-----------------------------------------

package org.ksea.controller;

import java.io.File;

import java.io.IOException;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

import org.apache.commons.io.FileUtils;

import org.ksea.dao.UserDao;

import org.ksea.exception.UserExcetion;

import org.ksea.model.User;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.validation.BindingResult;

import org.springframework.validation.annotation.Validated;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartFile;

@Controller

@RequestMapping({ "/user" })

public class UserController {

//查询用户列表信息

@RequestMapping(value={ "/users" },method=RequestMethod.GET)

public String queryUsers(Model model) {

UserDao userDao = new UserDao();

List<User> users = userDao.queryUserList();

model.addAttribute("users", users);

return "user/userlist";

}

//根据用户名查询用户

@RequestMapping(value={"/{username}/queryUser"},method=RequestMethod.GET)

public String queryUser(@PathVariable
String username,Model model){

UserDao userDao= new UserDao();

User user=
userDao.queryUserByUserName(username);

model.addAttribute("user", user);

return "user/detailUser";

}

//用该方法说明SpringMvC中返回json数据

@RequestMapping(value={"/{username}/queryUser1"},method=RequestMethod.GET,produces="application/json")

@ResponseBody

public User queryUser(@PathVariable String username){

UserDao userDao= new UserDao();

User user=
userDao.queryUserByUserName(username);

return user;

}

//添加用户、跳转添加用户界面

@RequestMapping(value={"/add"},method=RequestMethod.GET)

public String add(Model model){

User user= new User();

model.addAttribute("user", user);

return "user/addUser";

}

/**

//执行添加用户操作Save

//单文件操作

@RequestMapping(value={"/add"},method=RequestMethod.POST)

//注明:此处上传MultipartFile attach通过传参获取文件,

//SpringMVC中form标签没有提供,只能通过input,其attach与input中name值必须一直

//controller配置文件还需配置CommonsMultipartResolver的bean

public String add(@Validated User user, BindingResult br,MultipartFile attach,HttpServletRequest request){

//注意在验证之后@Validated必须紧紧跟着BindingResult 他们两个中间不能有别的或者或编译不通过

if(br.hasErrors())

return "user/addUser";

//attach.getName()获取的值就是MultipartFile的属性也就是attach

//attach.getOriginalFilename()文件原始名称,也就是您上传文件的文件名

//attach.getContentType() 上传文件类型

//获取文件上传路径

String
realPath=request.getSession().getServletContext().getRealPath("/resources/upload");

File file= new File(realPath+"/"+attach.getOriginalFilename());

try {

//上传文件

FileUtils.copyInputStreamToFile(attach.getInputStream(), file);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

UserDao userDao= new UserDao();

userDao.addUser(user);

return "redirect:/user/users";

}*/

//以上单文件上传仅供参考

//执行添加用户操作Save

//多文件同时上传

@RequestMapping(value={"/add"},method=RequestMethod.POST)

public String add( @Validated User user,

BindingResult br,

@RequestParam("attachs") MultipartFile[] attachs,

HttpServletRequest request){

if(br.hasErrors())

return "user/addUser";

String
realPath=request.getSession().getServletContext().getRealPath("/resources/upload");

try {

//循环上传多个文件

for (int i = 0; i < attachs.length; i++) {

//如果上传的文件不存在,跳过不执行

if(attachs[i].isEmpty())

continue;

File file= new File(realPath+"/"+attachs[i].getOriginalFilename());

FileUtils.copyInputStreamToFile(attachs[i].getInputStream(), file);

//注意这里只处理了单个文件的保存,多文件保存,根据情况而定

user.setFilename(attachs[i].getOriginalFilename());

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

UserDao userDao= new UserDao();

userDao.addUser(user);

return "redirect:/user/users";

}

//下载

@RequestMapping(value={"{filename}/downloadFile"},method=RequestMethod.GET)

public String downloadFile(@PathVariable String filename){

System.out.println(filename);

return "redirect:/user/users";

}

//更新用户信息、根据用户id查询之后、跳转到用户更新界面

@RequestMapping(value={"{uid}/updateUser"},method=RequestMethod.GET)

public String updateUser(@PathVariable String uid,Model model){

UserDao userDao= new UserDao();

User user=userDao.queryUserByUid(uid);

model.addAttribute("user", user);

return "user/updateUser";

}

//执行更新用户信息操作

@RequestMapping(value={"{uid}/updateUser"},method=RequestMethod.POST)

public String updateUser(@Validated User user,BindingResult br){

if(br.hasErrors())

return "user/updateUser";

UserDao userDao= new UserDao();

userDao.updateUser(user);

return "redirect:/user/users";

}

//根据用户ID执行删除操作

@RequestMapping(value={"{uid}/deleteUser"},method=RequestMethod.GET)

public String deleteUser(@PathVariable String uid){

UserDao userDao= new UserDao();

userDao.deleteUser(uid);

return "redirect:/user/users";

}

//执行跳转到登录界面

@RequestMapping(value={"/login"},method=RequestMethod.GET)

public String login(Model model){

model.addAttribute("user", new User());

return "user/login";

}

@RequestMapping(value={"/login"},method=RequestMethod.POST)

//保存sesion的值直接将session传递在参数中即可

public String login(User user,HttpSession session) throws UserExcetion{

User u=null;

UserDao userDao= new UserDao();

u= userDao.login(user);

if(null==u){

throw new UserExcetion("用户名与密码不匹配!");

}

//此处登录成功

session.setAttribute("user", u);

return "redirect:/user/users";

}

//局部异常处理、只能处理对应Controller中的异常,全局异常见SpringMVC中全局异常处理

/**

@ExceptionHandler(value={UserExcetion.class})

public String handlerException(UserExcetion userExcetion,HttpServletRequest request){

request.setAttribute("e", userExcetion);

return "user/error";

}*/

}

---------------------------------------login.jsp----------------------------



--------------------------------------userlist.jsp----------------------------------------------

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'userlist.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<link rel="stylesheet" href="<%=request.getContextPath()%>/resources/css/main.css" type="text/css">

<script type="text/javascript">

function alteronClick(value){

json(value);

}

function json(valueURL){

var xhr = new XMLHttpRequest();

xhr.open('get','<%=request.getContextPath()%>/'+valueURL,true);

xhr.onreadystatechange=function(){

if(xhr.readyState==4){

var json = xhr.responseText;

var obj=eval("("+json+")");

alert(obj.username);

}

}

xhr.send(null);

}

</script>

</head>

<body>

当前登录用户是:${user.username} <注明:此处是从loginsession取得的数据>

<A href="user/add">添加用户</A>

用户信息列表:<br/>

<table>

<c:forEach items="${users}" var="user">

<tr>

<Td>用户编码:${user.uid}</Td>

<Td>用户名: <A href="user/${user.username}/queryUser"> ${user.username}</A> </Td>

<Td>用户密码:${user.pwd} </Td>

<Td>邮箱:${user.email}</Td>

<Td>昵称:${user.nickname }</Td>

<Td>附件:<a href="user/${user.filename}/downloadFile"> ${user.filename } </a></Td>

<td>

<input onclick="alteronClick('user/${user.username}/queryUser1');" type="button" value="json">

</td>

<td><A href="user/${user.uid}/updateUser">修改</A></td>

<td><A href="user/${user.uid}/deleteUser">删除</A></td>

<tr>

</c:forEach>

</table>

</body>

</html>

------------------------------------------------------addUser.JSP--------------------------------------

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'userlist.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

添加用户信息:<br/>

<sf:form method="post" modelAttribute="user" enctype="multipart/form-data">

用户名:<sf:input path="username" /><sf:errors path="username"/>

<br/>

密码:<sf:password path="pwd"/><sf:errors path="pwd"/>

<br/>

邮箱:<sf:input path="email" /><sf:errors path="email"/>

<br/>

昵称:<sf:input path="nickname"/>

<br/>

附件上传:<br/><input type="file" name="attachs" /><br/>

<input type="file" name="attachs" /><br/>

<input type="file" name="attachs" /><br/>

<br/>

<input type="submit" value="添加用户">

</sf:form>

</body>

</html>

-------------------------------------------------detailUser.jsp---------------------------------------------------

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'userlist.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

用户明细信息:<br/>

用户编码:${user.uid}<br/>

用户名:${user.username}<br/>

用户密码:${user.pwd}<br/>

邮箱:${user.email}<br/>

昵称:${user.nickname }<br/>

</body>

</html>

-------------------------------------------------------updateUser.jsp---------------------------------------------

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'userlist.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

添加用户信息:<br/>

<sf:form method="post" modelAttribute="user">

用户名:<sf:input path="username" /><sf:errors path="username"/>

<br/>

密码:<sf:input path="pwd"/><sf:errors path="pwd"/>

<br/>

邮箱:<sf:input path="email" /><sf:errors path="email"/>

<br/>

昵称:<sf:input path="nickname"/>

<br/>

<input type="submit" value="更新用户">

</sf:form>

</body>

</html>

--------------------------------error-----------------------------

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'error.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

局部异常信息处理内容: ${e.message}

全局异常处理是从SpringMVC中读取的信息:${exception.message}

</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: