• Struts2>中文乱码


    1、<form action="user!add" method="post"> 必表单提交方法必须为post,如果是get就出错

    Action1.java

    package com.ncepu.struts2;
    
    public class Action1 {
    
    	private String name;
    	private String password; //传递参数的时候  用的是方法 而不是赋给属性,
    	                       //所以说将password改成userpassword下面方法setPassword不变也可以。	                       
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getPassword() {
    		return password;
    	}
    
    	public void setPassword(String password) {
    		this.password = password;
    	}
    
    	public String add() {
    		
            System.out.println("添加的name="+name+"添加的password="+password);
    		return ("success");
    	}
    
    }
    

    struts.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>
    	<constant name="struts.devMode" value="true" />
    	<package name="default" namespace="/" extends="struts-default">
    		<action name="user" class="com.ncepu.struts2.Action1">
    			<result name="success">
    				/add.jsp
                </result>
    		</action>
    	</package>
    </struts>
    

    index.jsp

    <body>
    			<!--必须为post-->
    		<form action="user!add" method="get">
    			姓名2
    			<input type="text" name="name">
    			密码1
    			<input type="text" name="password">
    			<input type="submit" value="submit" />
    		</form>
    	</body>

    后台输出为:添加的name=°?????·?添加的password= °?·??÷

    解决方法:
    1、必须将<form action="user!add" method="post"> 必表单提交方法必须为post才正确。

    2、对请求参数重新编码(参照http://blog.csdn.net/ncepustrong/article/details/7927027)

    String name = new String(request.getParameter("name").getBytes("ISO8859-1"));
    String password= new String(request.getParameter("password").getBytes("ISO8859-1"));
    

    在此使用到了request,必须得到。

    package com.ncepu.struts2;
    
    import java.io.UnsupportedEncodingException;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class Action1 extends ActionSupport {
    
    	private static final long serialVersionUID = 1L;
    	HttpServletRequest request;
    	private String name;
    	private String password; // 传递参数的时候 用的是方法 而不是赋给属性,
    
    	// 所以说将password改成userpassword下面方法setPassword不变也可以。
    
    	public String getName() {
    		return name;
    	}
    
    	public Action1() {
    		request = ServletActionContext.getRequest();
    
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getPassword() {
    		return password;
    	}
    
    	public void setPassword(String password) {
    		this.password = password;
    	}
    
    	public String add() throws UnsupportedEncodingException {
    		name = new String(request.getParameter("name").getBytes("ISO8859-1"));
    		password = new String(request.getParameter("password").getBytes("ISO8859-1"));
    		System.out.println("添加的name=" + name + "添加的password=" + password);
    		return ("success");
    	}
    
    }
    


     

  • 相关阅读:
    JavaScript 资源II
    浮动图片(JS)
    2006/1/14的问题以及解答
    Sql问题
    让SQL飞起来
    当页面上的某个控件回发时,保持滚动条位置的。
    自制的日历控件,可以在日历上DIY事情,相关于记一些随笔的文字之类的话题,如“1/28 是新年啊”
    根据的数据库的level关系绑定数据到控件上.
    十大必备VisualStudio插件
    1、12的经验值
  • 原文地址:https://www.cnblogs.com/xqzt/p/5637212.html
Copyright © 2020-2023  润新知