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

来源:互联网 发布:unity3d回合制游戏 编辑:程序博客网 时间:2024/04/30 19:55

源码下载地址: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(@PathVariableString 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>

0 0
原创粉丝点击