Skip to content

Instantly share code, notes, and snippets.

@wjch
Last active December 17, 2015 23:58
Show Gist options
  • Save wjch/5693055 to your computer and use it in GitHub Desktop.
Save wjch/5693055 to your computer and use it in GitHub Desktop.
@Controller //让该类成为控制器
public class HelloController {
@RequestMapping(value={"/","/hello"})
public String hello(int id,Map<String,Object> map) { //使用Map传值
System.out.println(id);
System.out.println("hello");
map.put("hello", "world");
return "hello";
}
@RequestMapping(value="/say")
public String say(@RequestParam int id,Model model) { //建议使用model传值
System.out.println("say");
model.addAttribute("hello", "value");
//使用Object的类型作为key,String-->string
model.addAttribute("ok");
return "hello";
}
//访问servlet api
@RequestMapping("/req")
public String req(HttpServletRequest req) {
System.out.println(req.getParameter("username"));
return "hello";
}
<?xml version="1.0" encoding="utf-8"?>
<decorators defaultdir="/decorators">
<!-- 此处用来定义不需要过滤的页面 -->
<excludes>
</excludes>
<!-- 用来定义装饰器要过滤的页面 -->
<decorator name="main" page="main.jsp">
<pattern>/*</pattern>
</decorator>
</decorators>

####1.web.xml####

   <servlet>
	<servlet-name>hello</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            //启动时默认运行
	<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
	<servlet-name>hello</servlet-name>
            //spring支持RESTful风格,故为斜杠
	<url-pattern>/</url-pattern>
</servlet-mapping>

####2.xxx-servlet.xml

<mvc:annotation-driven/>
<context:component-scan base-package="com.wjch.controller"></context:component-scan>


<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/jsp/"></property>
	<property name="suffix" value=".jsp"></property>
</bean>

####3.controller####

 @Controller  //让该类成为控制器
 public class HelloController {
    
@RequestMapping(value={"/","/hello"})    
public String hello(int id,Map<String,Object> map) {
	System.out.println(id);
	System.out.println("hello");
	map.put("hello", "world");
	return "hello";
}

   //url为:/say?id=10
@RequestMapping(value="/say")  
public String say(@RequestParam int id,Model model) {
	System.out.println("say");
	model.addAttribute("hello", "value");
	//使用Object的类型作为key,String-->string
	model.addAttribute("ok");
	return "hello";
}

   //利用HttpServletRequest传值,url为:req?username=10
@RequestMapping("/req")
public String req(HttpServletRequest req) {
	System.out.println(req.getParameter("username"));
	return "hello";
}

####4.siteMesh标签####

   <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>

<decorator:body />

####5.关系####

<!-- utf8编码配置 -->
<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>
<!--启用siteMesh来装饰页面-->
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--对应相应的user_servlet.xml文件-->
<servlet>
<servlet-name>user</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>user</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
package cn.edu.zttc.controller;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
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.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import cn.edu.zttc.vo.User;
import cn.edu.zttc.vo.UserException;
@Controller
@RequestMapping("/user")
@SessionAttributes("loginUser")
public class UserController {
private final static Map<String,User> users = new HashMap<String,User>();
public UserController() {
users.put("ldh",new User("ldh","刘德华","123","123123"));
users.put("zxy",new User("zxy","张学友","123","123123"));
users.put("gfc",new User("gfc","郭富城","123","123123"));
users.put("lm",new User("lm","黎明","123","123123"));
}
@RequestMapping({"/users","/"})
public String list(Model model) {
model.addAttribute("users",users);//map
return "user/list";
}
@RequestMapping(value="/add",method=RequestMethod.GET)
public String add(Model model) {
model.addAttribute(new User());//User-->user
return "user/add";
}
@RequestMapping(value="/add",method=RequestMethod.POST)
public String add(@Valid User user,BindingResult binding) {
if(binding.hasErrors()) {
return "user/add";
}
users.put(user.getUsername(), user);
return InternalResourceViewResolver.REDIRECT_URL_PREFIX+"/user/users";
}
@RequestMapping(value="/{username}",method=RequestMethod.GET)
public String show(@PathVariable String username,Model model) {
model.addAttribute(users.get(username));
return "user/show";
}
@RequestMapping(value="/{username}/update",method=RequestMethod.GET)
public String update(@PathVariable String username,Model model) {
model.addAttribute(users.get(username));
return "user/update";
}
@RequestMapping(value="/{username}/update",method=RequestMethod.POST)
public String update(@PathVariable String username,@Valid User user,BindingResult br,Model model) {
if(br.hasErrors()) {
return "user/update";
}
users.put(username, user);
return "redirect:/user/users";
}
@RequestMapping(value="/{username}/delete",method=RequestMethod.GET)
public String delete(@PathVariable String username) {
users.remove(username);
return "redirect:/user/users";
}
//使用响应体来传递json对象
@ResponseBody
@RequestMapping(value="/{username}",params="json")
public User showJson(@PathVariable String username,Model model) {
System.out.println(username);
return users.get(username);
}
//使用GET方法传值
@RequestMapping(value="/login",method=RequestMethod.GET)
public String login() {
return "user/login";
}
//使用POST方法传值
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(String username,String password,Model model) {
if(!users.containsKey(username)) {
throw new UserException("用户名不存在");
}
if(!password.equals(users.get(username).getPassword())) {
throw new UserException("用户密码不正确");
}
model.addAttribute("loginUser", users.get(username));
return "redirect:/user/users";
}
@ExceptionHandler(value={UserException.class})
public String handlerException(Exception ex,HttpServletRequest req) {
req.setAttribute("ex",ex);
return "error";
}
//使用RedirectAttribute来进行flash attribute的传值。
@RequestMapping("/redir")
public String redir(Model model,RedirectAttributes ra) {、
//默认可以使用model.addAttribute("tttt", "吞吞吐吐");但是跳转时务必使用RedirectAttributes
ra.addFlashAttribute("tttt", "吞吞吐吐");
return "redirect:/user/users";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment